当前位置:   article > 正文

排序算法(快速排序)

51,40628778053240*快速排序

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

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

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

 1 """
 2 @Author TZG
 3 @Email 1651504722@qq.com
 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

 

转载于:https://www.cnblogs.com/t0000/p/9378364.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/947732
推荐阅读
相关标签
  

闽ICP备14008679号