void quicksort(int arr[], int left, int right) { if (left >= right) { return; } int pivot = arr[(left + right) / 2]; int i = left - 1, j = right + 1; while (i < j) { do { i++; } while (arr[i] < pivot); do { j--; } while (arr[j] > pivot); if (i < j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } quicksort(arr, left, j); quicksort(arr, j + 1, right); }添加注释
时间: 2024-02-14 17:22:08 浏览: 58
// 快速排序算法实现
void quicksort(int arr[], int left, int right) {
// 如果左右指针重合或者左指针大于右指针,退出递归
if (left >= right) {
return;
}
// 取中间值作为基准值
int pivot = arr[(left + right) / 2];
// 定义左右指针
int i = left - 1, j = right + 1;
// 开始快速排序
while (i < j) {
// 从左向右,找到第一个大于等于基准值的元素
do {
i++;
} while (arr[i] < pivot);
// 从右向左,找到第一个小于等于基准值的元素
do {
j--;
} while (arr[j] > pivot);
// 如果左指针小于右指针,交换两个元素
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 递归排序左半部分
quicksort(arr, left, j);
// 递归排序右半部分
quicksort(arr, j + 1, right);
}
阅读全文