快速排序实现的前提有两个:
1、基线条件
2、归纳条件
现在来具体解释一个这两个条件
基线条件:排序说白了就是比较数的大小,比较的时候至少有两个数吧!(因为一个数是不能比较的,就像比较好与坏,也要有个对象吧!)基线的意思就是这个标准,例如:基线是5,你可以拿1与5比较,1比5小,10与5比较,10比5大,这就是基线。
归纳条件:可以从这个字面意思来分析,需要借助于上面这个名词,基线,归纳就是归档,如基线是5,[3,2,1,4 ]这些都比5小,把它们归并在一起,[8,9,7,6]这些比5大,把它们归并在一起
当然,有了这两个还不够,为什么呢!因为还差一个最重要的概念-----递归,想一想,如果你只是进行一次操作,在大多数情况下就不可能完成排序的(也有特殊情况,这个概率还是比较小的)在这个地方,大家要仔细的想一个,或者当你看到这的时候,不妨闭上眼睛,想30秒,什么是递归(如果你比较了解的话,此处略过)如果你此时已经明白,那就好办了,现在你按照这个思路,把比基线小的做一次排序,再把比基线大的做一个排序,........如此反复,对,你已经完成了整个流程,现在让我们用代码来实现
此处使用python来实现:当然其它语言也可以,最重要的是思路
def quick_sort(array):
if len(array) < 2:
return array
else:
pivot = array[0]
less = [i for i in array[1:] if i <= pivot]
greater = [i for i in array[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
if __name__ == "__main__":
array = [23,45,10,23,89,120]
re = quick_sort(array)
>> [10, 23, 23, 45, 89, 120]