快速排序法

匿名 (未验证) 提交于 2019-12-03 00:34:01

快速排序的平均效率为O(n * long n),最坏的情况为O(n^2),这和之前的选择排序法效率快很多,但也有局限性。

假设有2个数组,一个数组为空,另外一个为1,[_,1],那么排序就知道返回的是1,没有可比性,那如果有3个都有值的数组呢?

[3,2,1]

那么我们取中间的2为比较量,把小于2的放在左边,把大于2的放在右边。那么就行成了外部有序的数组,内部是无序的。什么意思呢?
整体看是从小到大的顺序排列,而内部顺序还未排序 [  [无序(小于2的数组)] 2 [无序(大于2的数组)]    ]

就是这个意思,那么快速排序法就是将多个元素的数组,一直筛选到没有可比性为止。

python

def quicksort(array):     if len(array)<2:         return array     else:         index=math.ceil((len(array) - 1) / 2)         piovt=array[index]         #选出大于piovt的值         greater=[i for i in array if i > piovt]         #选出小于piovt的值         less=[i for i in array if i < piovt]         #选出等于piovt的值         center=[array[i] for  i in range(0,len(array)) if array[i]==piovt and i!=index]         return  quicksort(less) + [piovt]+ center +quicksort(greater)   if __name__ == '__main__':     print(quicksort([5,3,3,2,12,3,5]))  

输出结果:[2, 3, 3, 3, 5, 5, 12]

文章来源: 快速排序法
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!