#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
void kp(int *a,int sta,int end){
//判断是否为一个数字或者没有数字
if(sta >= end)
return ;
//设定中间元素为基准数
int mid = a[(sta+end) / 2],l = sta,r = end;
while( l < r){
while(a[l] < mid){ //从左到右找比基准数大的
l++;
}
while(a[r] > mid){ //从右到左找比基准数小的
r--;
}
if(l <= r){ //交换
swap(a[l],a[r]);
l++;
r--;
}
}
//l在左r在右 开始递归
if(sta < r) kp(a,sta,r);
if(l < end) kp(a,l,end);
}
int main(){
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
}
kp(a,0,n-1);
for(int i=0;i<n;i++){
cout << a[i] << " ";
}
return 0;
}
再来个使用sort的,嘿嘿嘿
#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
int main(){
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++){
cout << a[i] << " ";
}
return 0;
}
本人新手,有问题请大佬指出