快速排序
首先要理解什么是快速排序:
在平均状况下,排序n个项目要O(n log n)次比较,在最坏情况下需要O(n2)次比较。
说人话,我们可以将快速排序拆解为以下几个步骤:
1.在给定的数列中挑一个元素,称为基数(pivot);
2.对数列进行排序
若元素大于基数,则将元素排在基数右面;
若元素小于基数,则将元素排在基数左面;
若元素等于基数,将元素放在左右皆可;
这个简单排序结束以后,我们会看到我们找的基数大体应该在数列的中间位置,这个称为叫做分区;
3.对基数两边的数列进行递归操作。
其实,说的简单点就是以数列中的一个数为基准不断的对数列进行分区,等数列中元素的个数为1时即达到排序结果。
下面是代码实现:
|
|
附一个代码的图解