🏋️ C3-9 随心所欲的排序 · 本讲巩固

精选 6 道本讲核心题 · 冒泡排序·自定义比较·第K大·多条件排序

📌 在家怎么做本讲巩固: ① 先自己想思路 ② 对照流程图检查 ③ 去OJ平台敲代码 ④ 输本讲密码对答案
下面的解题思路流程图 + 重难点提示可以直接看;参考答案代码需要输入本节课密码后在本页弹出。
1L247 数组元素的排序

📚 覆盖知识点

sort函数、数组、升序排序、algorithm头文件

⭐ 难度

入门级,sort函数基础应用

解题思路流程图

读入n个数存入数组a
↓
sort(a, a+n) 默认升序排序
↓
遍历输出排序后的数组

⚠️ 需格外注意

  • 必须包含头文件 #include <algorithm>
  • sort的参数是起始地址和结束地址(不包含结束地址)
  • 默认升序排序,不需要第三个参数
🚀 去OJ平台做题(L247)
4T1310 车厢重组(冒泡排序)

📚 覆盖知识点

冒泡排序、交换次数统计、双重循环、逆序对

⭐ 难度

入门级,冒泡排序应用

解题思路流程图

读入n个车厢编号
↓
初始化count=0
↓
冒泡排序:a[j]>a[j+1]则交换,count++
↓
输出count(交换次数)

⚠️ 需格外注意

  • 冒泡排序外层循环n-1次,内层循环n-1-i次
  • 每次交换都要count++,统计总交换次数
  • 交换次数等于逆序对的数量
🚀 去OJ平台做题(T1310)
6P1384 冒泡排序

📚 覆盖知识点

冒泡排序实现、flag优化、双重循环

⭐ 难度

入门级,冒泡排序标准实现

解题思路流程图

读入n个数
↓
外层循环n-1次,flag标记是否有交换
↓
内层比较相邻元素,前大后小则交换
↓
某轮无交换则提前结束,输出结果

⚠️ 需格外注意

  • flag优化:某轮没有交换说明已经有序,可以提前结束
  • 内层循环范围是0到n-1-i(每轮确定一个最大值)
  • 交换用临时变量temp,不能直接交换
🚀 去OJ平台做题(P1384)
9L250 第K大与第K小数

📚 覆盖知识点

排序应用、第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
🚀 去OJ平台做题(L250)
10L89 奇数序列排序(自定义排序)

📚 覆盖知识点

条件筛选、新数组、排序、奇偶判断

⭐ 难度

普及-,筛选后排序

解题思路流程图

读入n个数
↓
筛选奇数存入新数组odd,计数cnt
↓
sort(odd, odd+cnt) 排序
↓
输出排序后的奇数序列

⚠️ 需格外注意

  • 先筛选奇数存入新数组,再对新数组排序
  • 新数组的有效长度是cnt,不是n
  • 奇数判断:x%2 != 0 或 x%2 == 1
🚀 去OJ平台做题(L89)
15L120 谁考了第k名(排序应用)

📚 覆盖知识点

排序应用、第K名、降序排序、下标计算

⭐ 难度

普及-,排序后定位

解题思路流程图

读入n个学生成绩和K
↓
sort降序排序(从高到低)
↓
第K名 = a[K-1](下标从0开始)
↓
输出第K名的成绩

⚠️ 需格外注意

  • 降序排序后,第1名是a[0],第K名是a[K-1]
  • 注意K的范围:1<=K<=n
  • 如果有同分情况,题目一般会说明如何处理
🚀 去OJ平台做题(L120)
💪 本讲巩固做完意犹未尽?👉 去 💻 OJ练习题(完整题库 10基础+5进阶) 刷更多题!