快速排序
void QuickSort(ElemType A[], int low, int high) {
if(low < high) {
int pivotpos = Partition(A, low, high);
QuickSort(A, low, pivotpos - 1);
QuickSort(A, pivotpos + 1, high);
}
}
int Partition(ElemType A[], int low, int high) {
ElemType pivot = A[low];
while(low < high) {
while(low < high && A[high] >= pivot)
--high;
A[low] = A[high];
while(low < high && A[low] <= pivot)
++low;
A[high] = A[low];
}
A[low] = pivot;
return low;
}
- 最好空间复杂度:O(log2n)
最坏空间复杂度:O(n)
平均空间复杂度:O(log2n) - 平均时间复杂度:O(nlog2n)
最坏时间复杂度:O(n2) - 算法稳定性:不稳定
- 快速排序是所有内部排序算法中平均性能最优的排序算法