剛學cstdlib的qsort沒幾天,又學了STL的sort
顯然頭文件是algorithm
為了測效率,在linux翻了倒去,最后連arbiter都用上。
發(fā)現(xiàn)比qsort form cstdlib和手寫的qsort 略慢一點,比heap和歸并略快一點。
基本上是可以用的。(畢竟我還常用heap和歸并替代qsort)
比起cstdlib來說最好的就是靈活
bool cmp(T a,T b){...}
怎么比較隨你,只要返回true或false即可
為false就交換,為true就不交換。
sort(*a,*b,cmp);
a,b是頭指針和尾指針,由于數(shù)組等價于指針,所以代碼各外簡單。
注意原型是std::sort所以要using namespace std;(寫原型亦可,隨你)

裸排序(升序)
#include <cstdio>
#include <cstring>
#include <algorithm>
// using namespace std;

int cmp(int a,int b)
{
return a<b;
}
int a[500001];

int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int n;
scanf("%d",&n);
for(int i=0;i<=n-1;i++)
scanf("%d",&a[i]);
std::sort(a,a+n,cmp);
for(int i=0;i<=n-1;i++)
printf("%d ",a[i]);
}
