自己写的快排
#include <iostream>
using namespace std;
int n, a[1000];
void QuickSort(int start, int end) {
if (start < end) {
int base = a[start], left = start, right = end;
while (left < right) {
while (left < right && a[right] > base) right--;
a[left] = a[right];
while (left < right && a[left] < base) left++;
a[right] = a[left];
}
a[left] = base;
QuickSort(start, left - 1);
QuickSort(right + 1, end);
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
QuickSort(1, n);
for (int i = 1; i <= n; i++) cout << a[i] << ' ';
}
但是在某sdn上看到了这个代码
if(left < right){
int pos = partition(arr, left, right);
quickSort(arr, left, pos - 1);
quickSort(arr, pos + 1, right);
}
}
public int partition(int[] arr, int left, int right){
int base = arr[left];
while(left < right){
while(left < right && arr[right] >= base){
right--;
}
arr[left] = arr[right];
while(left < right && arr[left] <= base){
left++;
}
arr[right] = arr[left];
}
arr[left] = base;
return left;
}
}
看的不是很懂,有没有大佬讲解一下做了什么优化吗?