qsort函数原型是
void qsort(void*base,size_t num,size_t width,
int(__cdecl*compare)(const void*,const void*));
4个参数:
void *base:指向需要排序的数组
size_t num:数组中元素的数目
size_t width:每个元素的长度
int(__cdecl*compare)(const void*,const void*); 回调函数(函数指针) 等价于
int(*compare) (const void *,const void*);
//如果 第一个参数 > 第二个参数 ,返回大于0的整数
第一个参数 = 第二个参数 ,返回整数0
第一个参数 < 第二个参数 ,返回小于0的整数
即:用户调用qsort库函数,qsort库函数调用用户编写的回调函数
思路:首先用C语言函数库#include<stdlib.h>库函数qsort()进行升序排序,在回调函数cmp进行比较,排序好之后,用for循环判断相邻两项是否相同,相同返回true,否则返回false。
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* _a, const void* _b) {
int a = *(int*)_a, b = *(int*)_b;
return a - b;
}
int main()
{
int nums[4] = { 1,3,2,4 };
int numSize = 4;
int i;
qsort(nums, numSize, sizeof(int), cmp);
for (i = 0; i < numSize - 1; i++) {
if (nums[i] == nums[i + 1])
return true;
}
return false;
}
//输出:0