快速排序概述:
快速排序本质是通过把一个数组划分为两个子数组,然后递归地调用自身为每一个子数组进行快速排序来实现的
(使用递归算法对规模非常大的数据项进行排序可能会引起栈溢出,导致存储错误)
快速排序的效率:
快速排序平均执行时间为 O(N*logN)级,最差的情况为 O(N2)
快速排序代码示例:
/**
* @Description :快速排序
* @Author: YinRong.Wu
*/
public class QuickSort {
private long[] theArray;
public QuickSort(long[] theArray) {
this.theArray = theArray;
}
public void recQuickSort(int left, int right) {
if (right-left<=0) return;
long pivot=theArray[right];
int partition = partitionIt(left, right, pivot);
recQuickSort(left,partition-1);
recQuickSort(partition+1,right);
}
/**
* @param left 传递0 也就是数组的开始索引
* @param right 数组的长度作为右边开始位置
* @param pivot 特定值
* @return
*/
public int partitionIt(int left, int right, long pivot) {
int leftPtr = left - 1;
int rightPtr = right;
while (true) {
while (leftPtr < right && theArray[++leftPtr] < pivot);
while (rightPtr > left && theArray[--rightPtr] > pivot