快速排序
时间复杂度为: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) | 不稳定 |
本文深入探讨了快速排序算法,详细介绍了其时间复杂度、最佳与最坏情况,并提供了快排的Java实现模板。通过图解辅助理解,阐述了算法步骤及核心思想。此外,对比了快速排序与其他常见排序算法在时间复杂度和稳定性上的差异。

被折叠的 条评论
为什么被折叠?



