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; }
进击的小🐴农