对上面的代码进行优化
时间: 2023-08-11 07:22:28 浏览: 101
好的,下面是对上面的代码进行优化的版本:
```c
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left + 1, j = right;
while (i <= j) {
if (arr[i] > pivot && arr[j] < pivot) {
swap(&arr[i], &arr[j]);
i++;
j--;
}
if (arr[i] <= pivot) {
i++;
}
if (arr[j] >= pivot) {
j--;
}
}
swap(&arr[left], &arr[j]);
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
主要的优化包括:
1. 右指针 `j` 的初始值为 `right`,而不是 `right - 1`,这样可以避免出现数组越界的情况。
2. 在循环中,使用 `if` 语句分别处理左右指针所指元素与枢轴元素的大小关系,并同时移动左右指针,避免了多余的循环比较。
3. 在每次交换元素时,使用 `swap` 函数进行操作,提高代码可读性和复用性。
阅读全文
相关推荐














