
int v1=*(int *)p1
int *为类型强转,最前的*为解引用
sort函数的比较函数中,若返回值为1或正数,则说明保持原有的顺序,(ab)
负数则翻转
第一题


简单使用qsort
qsort函数:
最后一栏比较函数cmp为谓词部分
sort函数的比较函数中,若返回值为1或正数,则说明保持原有的顺序,(ab)
负数则翻转
第二题



第三题

思路:升序排列数组,for循环遍历判断该元素和下一元素,相等则输出
int cmp(const void*a,const void*b)
{
return *(int *)a-*(int*)b;//升序排序
}
bool containsDuplicate(int* nums, int numsSize)
{
qsort(nums,numsSize,sizeof(int),cmp);
int cnt=1;
int temp;
for(int i=0;i<numsSize-1;i++)
{
if(nums[i]==nums[i+1])
{
cnt++;
if(cnt>=2)
{
return true;
}
}
else{
if(cnt>=2)
{
return true;
}
}
}
return false;
}
第四题

思路:先升序排序,循环判断相邻最大差值
第五题


重点为cmp的实现(我也没懂)
第六题


思路:先升序排序,重点为循环时从大到小遍历,寻找可能的最大周长的三角形,再判断其是否符合
第七题


重点:sscanf函数的应用,当遇到需要读取数组元素(或单一元素/字符串)的某几位并保存时,
使用sscanf(a[i],"%d:%d,&a,&b)
注:a[i]为要取的对象,%d:%d是原对象的形式(:也是,只是用%d来代替ab)
思路:创建一个ret数组,存放timepoints[i]每个对象所代表的时间
最后对数组升序排列,仅循环一次判断临近的差即可
总结:学会了对数组排序的qsort函数,cmp函数的构造,排序可优化循环
本文详细讲解了如何使用qsort进行数组排序,重点介绍了cmp函数的构造,涉及升序排列、查找重复元素、最大差值判断、三角形周长计算以及sscanf的应用。通过实例演示了如何优化数组操作和理解cmp在排序算法中的关键作用。
2948

被折叠的 条评论
为什么被折叠?



