快排
复杂度分析
- 最好时间复杂度:O(NlogN)
- 最坏时间复杂度:O(N^2)
- 平均时间复杂度:O(NlogN)
算法稳定性
不稳定
示例
// 包裹函数
void quickSort(T a[], int size){
quickSort(a, 0, size-1);
}
void quickSort(T a[], int low, int high){
int mid;
if(low >= high){
return ;
}
mid = divide(a,low,high);
quickSort(a,low,mid-1);
quickSort(a,mid+1,high);
}
int divide(T a[], int low, int high){
T k = a[low];
do{
while(low < high && a[high] >= k){
--high;
}
if(low < high){
a[low] = a[high];
++low;
}
while(low < high && a[low] <= k){
++low;
}
if(low < high){
a[high] = a[low];
--high;
}
}while(low != high);
a[low] = k;
return low;
}
本文详细介绍了快速排序算法,包括其最好情况、最坏情况及平均时间复杂度,并通过具体示例展示了快排的实现过程。此外,还分析了该算法的稳定性。
4237

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



