欢迎光临
我们一直在努力

sort 的进阶使用

1. sort 的进阶使用
1. 比较函数 cmp 
 bool cmp(int a,int b){
 If(a>b) return 1;
 else return 0;
 }
2. sort 函数实现其他规则排序的写法:
 sort(首元素地址,尾元素地址,比较函数)
3. sort 在结构体中的使用
 ①定义结构体
 ②定义比较函数,对结构体的判断对象进行操作
 ③主函数中使用 sort 调用即可
一、 sort 以及比较函数 cmp
引入:输入 1000 个元素,按从小到大排序后输出每一个元素。
sort()可以对数组内的元素实现默认从小到大的排序


sort 函数:如果要用 sort 函数实现从大到小或其他排序规则的排序,需要
更改 sort 函数的写法。


比较函数:比较函数一般定义为 cmp()函数,cmp 有两个参数,两个参数的顺序会根据 cmp 函数的返回值发生改变,若 cmp 函数返回值为 1,则两参数顺序不变,若返回值为 0,则交换两参数顺序。


sort 函数在结构体中的应用:一般来说,对结构体数组进行排序时,是按照
其中某个结构体对象的值按从大到小或从小到大的顺序来排序,所以无法直接使
用 sort 函数对结构体数组排序。


若需要使用 sort 函数对结构体数组进行排序,则需要明确结构体数组的排
序规则,根据排序相关的结构体对象的排序要求定义 cmp 函数,才能正确完成排序。


使用 sort 函数对结构体排序的步骤:
例:输入 5 个学生的姓名,语文成绩和综合评价,按照语文成绩从高到低对
学生信息排序并输出。
1. 根据上述信息可以构建出一个包含一个字符串变量、一个字符变量
以及一个整型变量的结构体 student


2. 本次的排序不再是对整型数组中的元素排序,而是对结构体数组中的
元素排序,因此 cmp 的传入值应该为两个 student 类型的结构体变量

3. 因为本次的排序需要按照语文成绩进行,因此 cmp 函数内进行大小判断的对象应该是 student 结构体的 score 成员


4. 最终在主函数中实现数据输入,sort 函数的调用即可
例:若输入 5 个学生的姓名,语文成绩和综合评价,按照语文成绩从高到低
对学生信息排序并输出。


二、 参考代码1. 跳绳比赛:
题目解析:根据题意我们获取到的信息是,将输入的 n 个跳绳成绩按照从多
到少的顺序输出,因此这道题我们可以使用 sort 函数对存入数组中的 n 个数据
进行排序,排序的比较函数 cmp 里若存入的值 a 比 b 大则返回 1,这样比较的结果是按照从大到小的排序,最后输出排好序的数组即可。


2. 谁是第 N 名:
题目解析:根据题意我们首先为学生定义一个结构体类型,将需要的结构体
成员定在结构体中,包括学生的学号(字符串),成绩(整数),这两个成员影响到
学生排名。
本次排序相关的结构体对象为成绩 num,根据 num 定义从大到小排序的
cmp 函数。
根据输入的 m,用它控制 for 循环,完成学生学号和成绩的输入。
利用 sort 函数对学生信息排序,并输出第 n 名的学号和成绩。

赞(0)
未经允许不得转载:171主机测评 » sort 的进阶使用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址