C/C++ qsort/sort函數性能測試

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章