十大排序算法(四)--- 快速排序
快速排序算法采用的是分治法的思想(Divide and Conquer), 它把一个待排序的数组,以某个元素或者称为基准(这里记为PIVOT)为界,分为两个子数组,比PIVOT小的全部移到到PIVOT左边,比PIVOT大的全部移动到PIVOT右边。再分别对以PIVOT分开的两个子数组重复该过程,直到无法再分。
快速排序正常情况下时间复杂度为O(nlogn)。最坏情况下为O(n^2)。最坏情况发生在每次排序都需要移动所有剩下待排序的元素,这种情况虽然很少发生,但是为了避免这样的情况可以采用随机选择PIVOT元素的方法来预防。下面描述算法的实现步骤: