// 快排函数 (从小到大排序)
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int a[1005];
int Partition(int l, int r);
void QuickSort(int l, int r){
if(l < r){
int m = Partition(l, r); // 区间(l, r) 一分为二;
QuickSort(l, m); // 对左半边操作;
QuickSort(m+1, r); // 对右半边操作;
}
}
int Partition(int l, int r){
int i = l, j = r-1;
int x = a[l]; // 用x作枢轴记录;
while(i < j){
while(i < j && a[j] >= x) --j; // 将 < x 的移到左半边;
a[i] = a[j];
while(i < j && a[i] <= x) ++i; // 将 > x 的移到右半边;
a[j] = a[i];
}
a[i] = x;
return i; //返回枢轴位置;
}
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; ++i) scanf("%d", &a[i]);
QuickSort(0, n);
for(int i = 0; i < n; ++i){
if(i) printf(" ");
printf("%d", a[i]);
}
printf("\n");
}
快排函数(手写)
最新推荐文章于 2024-08-20 13:59:19 发布