一、STL之sort
#include<bits/stdc++.h>
#define F(i,n,m) for(int i=n;i<=m;i++)
using namespace std;
int a[10000001];
int main()
{
int n;
cin>>n;
F(i,1,n)
cin>>a[i];
random_shuffle(a+1,a+n+1);
sort(a+1,a+n+1);
F(i,1,n)
cout<<a[i]<<' ';
return 0;
}
二、二分手打sort
#include<bits/stdc++.h>
#defind F(i,n,m) for(int i=n;i<=m;i++)
using namespace std;
int n,a[1000001];
void mysort(int l,int r)
{
int mid=a[(l+r)/2];
int i=l,j=r;
do{
while(a[i]<mid)
i++;
while(a[j]>mid)
j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
while(i<=j);
if(l<j) mysort(l,j);
if(i<r) mysort(i,r);
}
int main()
{
cin>>n;
F(i,1,n)
cin>>a[i];
random_shuffle(a+1,a+n+1);
mysort(1,n);
F(i,1,n)
cout<<a[i]<<' ';
return 0;
}
三、STL堆排序
#include<bits/stdc++.h>
#define F(i,n,m) for(int i=n;i<=m;i++)
using namespace std;
int main()
{
priority_queue<int,vector<int>,greater<int> > q;
int n,x;
cin>>n;
F(i,1,n)
{
cin>>x;
q.push(x);
}
F(i,1,n)
{
cout<<q.top()<<' ';
q.pop();
}
return 0;
}
四、桶排序
#include<bits/stdc++.h>
#define F(i,n,m) for(int i=n;i<=m;i++)
using namespace std;
int main()
{
map<int,int> a;
int n;
cin>>n;
F(i,1,n)
{
int x;
cin>>x;
a[x]++;
}
map<int,int>::iterator it=a.begin();
for(it;it!=a.end();it++)
{
aa:;
if(it->second==0) continue;
cout<<it->first<<' '; it->second--; goto aa;
}
return 0;
}