这是快速排序的一种写法,pivot点取中间
#include<iostream>
using namespace std;
int n;
int a[10000];
int quick_sort(int a[], int start, int end) {
if (start >= end) {
return 0;
}
int left = start, right = end;
int pivot = a[(start + end) / 2];//pivot的选取不能是首尾,取的是值
while (left <= right) { //注意等号
while (left <= right && a[left] < pivot) {
left++;
}
while (left <= right && a[right] > pivot) {
right--;
}
if (left <= right) {
int temp = a[left];
a[left] = a[right];
a[right] = temp;
left++;
right--;
}
}
quick_sort(a, start, right);
quick_sort(a, left, end);
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int start = 0, end = n - 1;
quick_sort(a, start, end);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}