四十六、排序的基本概念
1、排序的一般定义
排序是计算机内经常进行的一种操作,其目的是将一组 “无序” 的数据元素调整为 “有序” 的数据元素。
2、排序的数学定义
3、排序的示例
4、问题
按总评排序后为什么张无忌的排名比郭靖靠前呢?
因为采用的不稳定排序法。
5、排序的稳定性
6、稳定性排序示例
7、多关键字排序
- 排序时需要比较的关键字多余一个
- 排序结果首先按关键字1进行排序
- 当关键字1相同时按关键字2进行排序
- ……..
- 当关键字n-1相同时按关键字n进行排序
8、多关键字排序示例
9、问题
多关键字排序是否比单关键字排序更复杂?
对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可!!!
10、编程实验:多关键字比较操作
代码在最后,整合在一起。
11、排序中的关键操作
- 比较
- 任意两个数据元素通过比较操作确定先后次序
- 交换
- 数据元素之间需要交换才能得到预期结果
12、排序的审判
- 时间性能
- 关键性能差异体现在比较和交换的数量
- 辅助存储空间
- 为完成排序操作需要的额外的存储空间
- 必要时可以“空间换时间”
- 算法的实现复杂性
- 过于复杂的排序法可能影响可读性和可维护性
13、DTLib 中的排序类设计
14、编程实验:DTLib中的排序类
代码在最后,整合在一起。
15、小结
- 排序是数据元素从无序到有序的过程
- 排序具有稳定性,是选择排序算法的因素之一
- 比较和交换是排序的基本操作
- 多关键字排序与单关键字排序无本质区别
- 排序的时间性能是区分排序算法好坏的主要因素
四十七、选择排序和插入排序
1、选择排序的基本思想
每次(例如第i次,i = 0,1,..., n-2)从后面<