快排:
#include<iostream>
using namespace std;
int a[5000020];
void qsort(int l,int h)
{
if(l>=h) return;
int mid=(l+h)/2;
int p=a[mid];
swap(a[l],a[mid]);
int i=l,j=h;
while(l<h)
{
while(l<h&&a[h]>=p)
{
h--;
}
a[l]=a[h];
while(l<h&&a[l]<=p)
{
l++;
}
a[h]=a[l];
}
a[l]=p;
qsort(i,l-1);
qsort(l+1,j);
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
qsort(0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}
归并:
#include<iostream>
using namespace std;
int a[100010];
int b[100010];
void merge(int a[],int low,int mid,int high)
{
int i,j,k;
for( i=low;i<=high;i++)
b[i]=a[i];
for(i=low,j=mid+1,k=i;i<=mid&&j<=high;k++)
{
if(b[i]<=b[j])
a[k]=b[i++];
else
a[k]=b[j++];
}
while(i<=mid) a[k++]=b[i++];
while(j<=high) a[k++]=b[j++];
}
void mergesort(int a[],int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,mid,high);
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
mergesort(a,0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}