📌 在家怎么做本讲巩固:
① 先自己想思路
② 对照流程图检查
③ 去OJ平台敲代码
④ 输本讲密码对答案
下面的解题思路流程图 + 重难点提示可以直接看;参考答案代码需要输入本节课密码后在本页弹出。
1L247 数组元素的排序
📚 覆盖知识点
sort函数、数组、升序排序、algorithm头文件
解题思路流程图
读入n个数存入数组a
↓
sort(a, a+n) 默认升序排序
↓
遍历输出排序后的数组
⚠️ 需格外注意
- 必须包含头文件 #include <algorithm>
- sort的参数是起始地址和结束地址(不包含结束地址)
- 默认升序排序,不需要第三个参数
4T1310 车厢重组(冒泡排序)
📚 覆盖知识点
冒泡排序、交换次数统计、双重循环、逆序对
解题思路流程图
读入n个车厢编号
↓
初始化count=0
↓
冒泡排序:a[j]>a[j+1]则交换,count++
↓
输出count(交换次数)
⚠️ 需格外注意
- 冒泡排序外层循环n-1次,内层循环n-1-i次
- 每次交换都要count++,统计总交换次数
- 交换次数等于逆序对的数量
6P1384 冒泡排序
📚 覆盖知识点
冒泡排序实现、flag优化、双重循环
解题思路流程图
读入n个数
↓
外层循环n-1次,flag标记是否有交换
↓
内层比较相邻元素,前大后小则交换
↓
某轮无交换则提前结束,输出结果
⚠️ 需格外注意
- flag优化:某轮没有交换说明已经有序,可以提前结束
- 内层循环范围是0到n-1-i(每轮确定一个最大值)
- 交换用临时变量temp,不能直接交换
9L250 第K大与第K小数
解题思路流程图
读入n个数和K
↓
sort升序排序
↓
第K小数 = a[K-1],第K大数 = a[n-K]
↓
输出两个结果
⚠️ 需格外注意
- 第K小数下标是K-1(因为下标从0开始)
- 第K大数下标是n-K(升序排序后从后往前数第K个)
- 注意K的范围:1<=K<=n
10L89 奇数序列排序(自定义排序)
解题思路流程图
读入n个数
↓
筛选奇数存入新数组odd,计数cnt
↓
sort(odd, odd+cnt) 排序
↓
输出排序后的奇数序列
⚠️ 需格外注意
- 先筛选奇数存入新数组,再对新数组排序
- 新数组的有效长度是cnt,不是n
- 奇数判断:x%2 != 0 或 x%2 == 1
15L120 谁考了第k名(排序应用)
📚 覆盖知识点
排序应用、第K名、降序排序、下标计算
解题思路流程图
读入n个学生成绩和K
↓
sort降序排序(从高到低)
↓
第K名 = a[K-1](下标从0开始)
↓
输出第K名的成绩
⚠️ 需格外注意
- 降序排序后,第1名是a[0],第K名是a[K-1]
- 注意K的范围:1<=K<=n
- 如果有同分情况,题目一般会说明如何处理