qsort排序函数:
基于sort快速排序算法实现的一个排序函数。
基本使用:
void qsort(void* base, //待排序数据的起始位置
size_t num,//数组的元素个数
size_t width,//一个元素的字节大小
int(*cmp)(const void* elem1,sonst void* elem2)//cmp是一个函数指针,指向一个比较函数,需要自己编写,
//elem1与elem2是两个待比较元素的地址
return 返回值:
<0 elem1<elem2
0 elem1=elem2
>0 elem1>elem2
注:整型数据可以用><,结构体数据用><不太方便
举例:
题目说明:在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。
//该函数为构造qsort排序规则
int cmp(const void* _a, const void* _b) {
int a = *(int*)_a, b = *(int*)_b;
return a - b;
}
bool containsDuplicate(int* nums, int numsSize) {
qsort(nums, numsSize, sizeof(int), cmp);
for (int i = 0; i < numsSize - 1; i++) {
if (nums[i] == nums[i + 1]) {
return true;
}
}
return false;
}
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/contains-duplicate/solution/cun-zai-zhong-fu-yuan-su-by-leetcode-sol-iedd/
来源:力扣(LeetCode)