qsort 函数是C语言编译器函数库自带的排序函数。
函数原型:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
回调函数:
一个通过函数指针调用的函数,如果把这个函数的指针(函数地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就被称为回调函数。
简单来说,一间房子(函数)里面放着一把房间钥匙(函数指针),当我拿这把钥匙去开那个房间的时候,这个房间就被叫做回调房间(回调函数)
compar 参数:
compar 参数指向一个对比两个元素的函数。
compar原型:
int compar(const void *p1, const void *p2);
说明
qsort() 函数不返回任何值
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
本题只是最简单的判断数组内是否有重复元素,且没有空间要求。
排序法
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; // 否则返回无
}
以上就是本篇文章的全部内容了,如果觉得有帮助到你的,
我们下期再见!
在更新技术文章的同时,我还会更新我的学习方法到知乎上,如果大家感兴趣的可以去看一下。