快速排序
时间复杂度为:O(logn)
- 快排模板
public void quickSort(int left,int right,int [] array){
if(left >= right) return;
int i = left-1;
int j = right+1;
int x = array[left];
while(i<j){
do i++; while(array[i] < x);
do j--; while(array[j] > x);
if(i < j){
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
quickSort(left,j,array);
quickSort(j+1,right,array);
}
- 快排图解
ps : 各个排序算法的时间复杂度
算法 | 时间复杂度 | 最好 | 最坏 | 稳定性 | 空间 |
---|---|---|---|---|---|
插入排序 | O(n^2) | O(n) | O(n^2) | 稳定 | |
冒泡排序 | O(n^2) | O(n) | O(n^2) | 稳定 | |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | 稳定 | O(n) |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | 不稳定 | |
快速排序 | O(nlogn) | O(nlogn) | O(n^2) | 不稳定 |