C语言的qsort函数

学了这么久都不知道C语言有这个函数(其实是因为基本没写过C,除了学程序设计的时候。。)

qsort 的函数原型是void __cdecl qsort ( void *base, size_t num, size_t width, int (__cdecl *comp)(const void *, const void* ) ) 
其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。默认从小到大。

其中调用的算法是快速排序,并且是优化过的三路快排(划分为小于基准值、等于基准值、大于基准值的)。

其中第四个参数是一个函数指针,返回值是int,若需要递增排序:参数1>参数2应该返回正数,参数1<参数2返回负数,参数1==参数2返回0。

比如:

int cmp(const void* a,const void* b){
    return *(int*)(a)-*(int*)(b);
    }
int main(void)
{
    
    vector<int> p={3,432,52,12,5,3456,4523,43};
    qsort(&p[0],8,4,cmp);
    for(int x:p){
        cout<<x<<endl;
    }
    return 0;
}

 

posted @ 2020-03-18 22:44  NeoZy  阅读(255)  评论(0编辑  收藏  举报