对算法最好理解方式就是手动模拟一遍。
public class FastSortTest {
public static void main(String[] args) {
int[] array={53,5,33,67,23,89,2};
System.out.println("排序前:");
System.out.println(Arrays.toString(array));
quickSort(array,0,array.length-1);
System.out.println("排序后结果:");
System.out.println(Arrays.toString(array));
}
private static void quickSort(int[] array, int low, int high) {
if(low<high){
int position=partition(array,low,high);
quickSort(array,low,position-1);
quickSort(array,position+1,high);
}
}
private static int partition(int[] array, int low, int high) {
int pivot=array[low];
while (low<high){
while (low<high&&array[high]>=pivot){
high--;
}
array[low]=array[high];
while (low<high&&array[low]<=pivot){
++low;
}
array[high]=array[low];
}
array[low]=pivot;
return low;
}
}
小结
性能:是平均性能最好的基础算法。
稳定性:不稳定。
最坏情况的时间复杂度O(n2),两个区域分别包含n-1个元素和0个元素,即初始排序表基本有序或逆序时。