请给出改良快速排序算法的代码
时间: 2023-10-23 18:13:59 浏览: 177
改进的快速排序算法
4星 · 用户满意度95%
改良后的快速排序算法又称为三路快排,它在处理重复元素时比普通快排更加高效。以下是代码实现:
```
void quickSort(int arr[], int left, int right) {
if (left >= right) return;
int pivot = arr[left];
int lt = left, gt = right;
int i = left + 1;
while (i <= gt) {
if (arr[i] < pivot) {
swap(arr[i], arr[lt]);
i++;
lt++;
} else if (arr[i] > pivot) {
swap(arr[i], arr[gt]);
gt--;
} else {
i++;
}
}
quickSort(arr, left, lt - 1);
quickSort(arr, gt + 1, right);
}
```
这个算法的主要思路是将数组分为三部分:小于基准元素、等于基准元素、大于基准元素,然后分别对小于和大于基准元素的部分递归进行排序。这个算法的时间复杂度为 $O(n \log n)$,空间复杂度为 $O(\log n)$。
阅读全文