排序算法(快速排序)

Posted t0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法(快速排序)相关的知识,希望对你有一定的参考价值。

快速排序算法效率高,运行稳定的算法。jdk 内置就是采用的快速排序算法。

和归并排序相似快排也是采用分治法思想,将待排数列分成两部分,取一个参照元素,从两端到中间依次比较所有元素,将较小和较大元素分开。

然后重复这个过程,直至分到一个列表只有一个元素。

 1 """
 2 @Author TZG
 3 @Email [email protected]
 4 """
 5 import random
 6 import time
 7 import sys
 8 
 9 
10 # 生成一个长度1w的随机数列
11 a = []
12 for i in range(10000):
13     a.append(random.randint(0, 10000))
14 
15 print(len(a))
16 temp = a[:]
17 temp[5:9995] = [...]
18 print(temp)
19 
20 
21 # 快速排序
22 def quickSortTurn(L, low, high):
23     i = low
24     j = high
25     if i >= j:
26         return
27     key = L[i]
28     while i < j:
29         while i < j and L[j] >= key:
30             j = j - 1
31         L[i] = L[j]
32         while i < j and L[i] <= key:
33             i = i + 1
34         L[j] = L[i]
35     L[i] = key
36     quickSortTurn(L, low, i - 1)
37     quickSortTurn(L, j + 1, high)
38     return L
39 
40 
41 def quickSort(L):
42     return quickSortTurn(L, 0, len(L)-1)
43 
44 
45 # 快速排序开始
46 begin = time.time()
47 b = quickSort(a)
48 end = time.time()
49 print(len(b))
50 temp = b[:]
51 temp[5:9995] = [...]
52 print(temp)
53 t3 = (end - begin)
54 print("耗时:%ss" % t3)

输出:

1 10000
2 [4987, 3878, 5304, 3628, 3937, ..., 7613, 4245, 5005, 7630, 1]
3 10000
4 [1, 3, 3, 8, 8, ..., 9990, 9991, 9992, 9997, 9998]
5 耗时:0.025002479553222656s

 

以上是关于排序算法(快速排序)的主要内容,如果未能解决你的问题,请参考以下文章

一行Python代码搞定快速排序算法

交换排序(冒泡排序快速排序的算法思想及代码实现)

排序算法 | 快速排序(含C++/Python代码实现)

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

十大经典排序算法总结(快速排序)

快速排序算法详解及代码实现