快速排序是一个用递归方法实现会简单些。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int quicksort(int a[], int left, int right)
{
int tmp = a[left];
while(left < right)
{
while((left<right) && (a[right] >= tmp))
{
right--;
}
a[left] = a[right];
while((a[left] <= tmp)&& (left<right))
{
left++;
}
a[right] = a[left];
}
a[left] = tmp;
return left;
}
void quick(int a[], int left, int right)
{
int pivot;
if(left < right)
{
pivot = quicksort(a, left, right);
quick(a, pivot+1, right);
quick(a, left, pivot-1);
}
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
quick(a, 0, n-1);
for (int i = 0; i < n; ++i) {
cout << a[i] << ' ';
}
}