快速排序
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[100010];
void qsort(int l,int r){
int i,j,mid,t;
i=l;j=r;
mid=a[(l+r)/2];
while(i<j){
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j){
swap(a[i],a[j]);
i++;j--;
}
}
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
qsort(0,n-1);
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
归并排序
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[100010],b[100010];
void msort(int s,int t){
if(s==t) return;
int i,j,mid,k;
mid=(s+t)/2;
msort(s,mid);
msort(mid+1,t);
i=s;
j=mid+1;
k=s;
while(i<=mid && j<=t){
if(a[i]<a[j]){
b[k]=a[i];
k++;i++;
}
else {
b[k]=a[j];
k++;j++;
}
}
while(i<=mid){
b[k]=a[i];
k++;i++;
}
while(j<=t){
b[k]=a[j];
k++;j++;
}
for(int i=s;i<=t;i++){
a[i]=b[i];
}
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
msort(0,n-1);
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}