快速排序

Posted 逗比青年

tags:

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

像归并排序一样,快速排序也使用分治模式(因此也是用递归)

1.1快排与归并的区别:

快速排序按照原址工作,快速排序渐进运行时间介于最坏情况和平均情况之间。尤其是快排的最坏运行时间是θ(n^2), 但是他的平均情况下的运行时间要更好一些。
快速排序也有好的常数因子(比归并排序要好一点),并且它通常是实践中的一个好的排序算法。

1.2流程:

技术分享图片

1.3程序实现:

 1 def quickSort(arr):
 2     left = []
 3     pivotList = []
 4     right = []
 5     if len(arr) <= 1:
 6         return arr
 7     else:
 8         pivot = arr[0]      #将第一个值做为基准
 9         for i in arr:
10             if i < pivot:
11                 left.append(i)
12             elif i > pivot:
13                 right.append(i)
14             else:
15                 pivotList.append(i)
16 
17         left = quickSort(left)      #得到第一轮分组之后,继续将分组进行下去。
18         right = quickSort(right)
19 
20         return left + pivotList + right

还有一句话的版本:
qs = lambda xs : ( (len(xs) <= 1 and [xs]) or [ qs( [x for x in xs[1:] if x < xs[0]] ) + [xs[0]] + qs( [x for x in xs[1:] if x >= xs[0]] ) ] )[0]



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

算法排序之堆排序

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

如何使用sublime代码片段快速输入PHP头部版本声明

代码片段如何使用CSS来快速定义多彩光标

vs2003:快速片段工具