1,c++ sort函數,比較函數直接return 0或者1
int cmp(int a, int b)
{
return 1;
}
#define p 2
int ns[p];
int main()
{
clock_t start, stop;
start=clock();
sort(ns,ns+p,cmp);
stop=clock();
cout<<(double)(stop-start);
return 0;
}
(1)return 1
哪怕p=2,只有2個數,程序也會直接崩潰,因爲這不是嚴格弱序。
參考https://blog.csdn.net/nameofcsdn/article/details/104828188
(2)return 0
12345 0
123456 4
1234567 42
12345678 401
123456789 4034
排序10^8個數大概需要4秒
2,c語言qsort函數,比較函數直接return 0或者1
int cmp(const void *a, const void *b)
{
return 0;
}
#define p 12345678
int ns[p];
int main()
{
clock_t start, stop;
start=clock();
qsort(ns,p,sizeof(int),cmp);
stop=clock();
cout<<(double)(stop-start);
return 0;
}
(1)return 1
12345 375
123456 37047
(2)return 0
12345 0
123456 1
1234567 24
12345678 240
123456789 2413
可以看出,qsort對於非嚴格弱序雖然可以完成排序,但是非常慢。
3,c++ sort函數,極端全等數組
int cmp(int a, int b)
{
return a>b;
}
#define p 123456
int ns[p];
int main()
{
for(int i=0;i<p;i++)ns[p]=0;
clock_t start, stop;
start=clock();
sort(ns,ns+p,cmp);
stop=clock();
cout<<(double)(stop-start);
return 0;
}
12345 0
123456 6
1234567 42
12345678 412
123456789 4112
4,c語言qsort函數,極端全等數組
int cmp(const void *a, const void *b)
{
return *(int *)a > *(int *)b;
}
#define p 12345
int ns[p];
int main()
{
for(int i=0;i<p;i++)ns[p]=0;
clock_t start, stop;
start=clock();
qsort(ns,p,sizeof(int),cmp);
stop=clock();
cout<<(double)(stop-start);
return 0;
}
12345 0
123456 2
1234567 27
12345678 267
123456789 2697