C++qsort函数
1.目录:#include <cstdlib>
2.4个要素:数组指针(指向首元素),数组长度(一共多少个元素),元素大小,自定义比较函数的指针
3.qsort函数:调用时将要比较的两个元素的地址传给“比较函数”,然后根据“比较函数”返回值判断两个元素那个更应该排在前面。
4.较函数编写规则:如果*elem1应该排在*elem2前面,则函数返回值是负整数
如果*elem2和*elem2那个排在前面都行,那么函数返回0
如果*elem1应该排在*elem2后面则函数返回值是正整数
5.应用举例
question:写个函数比较按个位数从小到大排序数组
代码:
#include <iostream>
#include <cstdlib>
using namespace std;
int MyCompare(const void *elem1, const void *elem2)
{
unsigned int *p1, *p2;
p1=(unsigned int *)elem1;//由于void类型大小不知,所以为了能应用qsort函数故强制类型转化
p2 = (unsigned int *)elem2;
return (*p1 % 10) - (*p2 % 10);//如果函数返回的为负值(即p1的个位数小于p2的个位数)则p1排在p2前面
}
#define NUM 5//注意宏定义格式
int main()
{
unsigned int an[NUM] = { 8,123,11,10,4 };
qsort(an, NUM, sizeof(unsigned int), MyCompare);
for (int i = 0; i < NUM; i++)
{
cout << an[i] << endl;
}
return 0;
}