《专升本数据结构》第九章探讨的核心主题是排序,这是数据处理中不可或缺的操作,它通过特定次序排列数据元素,以提升查找效率。排序分为内部排序和外部排序,本章主要关注内部排序,包括插入排序、快速排序、选择排序和归并排序。
排序(Sorting)是指将无序数据元素序列按照特定标准(如数值大小、ASCII码顺序或汉字字典顺序)排列成有序序列的过程。在排序过程中,主要涉及两个基本操作:比较关键字值的大小和根据比较结果移动记录的位置。
1. 插入排序:
- 直接插入排序:是最简单的排序方法,通过逐步将每个记录插入到已排序的子序列中来扩展有序段。例如,初始序列中的第一个记录被视为有序,然后逐个将后续记录与已排序的子序列比较并插入合适的位置,直到所有记录都插入完毕。在实现中,可以使用监视哨(如r[0])来存储待插入记录,并从后向前进行比较和移动。
2. 交换排序:
- 冒泡排序:通过相邻元素间的反复交换,使得较大的元素逐渐“冒”到序列末尾。
- 快速排序:采用分治策略,选取一个基准元素,将序列分成两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后分别对这两部分进行快速排序。
3. 选择排序:
- 直接选择排序:每次从未排序的部分中找到最小(或最大)的元素,放到已排序部分的末尾。
- 堆排序:利用堆这种数据结构,构建最大(或最小)堆,然后将堆顶元素与末尾元素交换,调整堆,直至序列有序。
4. 归并排序:将序列分成两半,分别对每一半进行排序,然后合并两个已排序的子序列,形成最终的有序序列。这种方法保证了排序的稳定性。
排序方法的选择取决于多种因素,如数据量、内存限制、稳定性需求和时间复杂度等。内部排序适用于数据全部能放入内存的情况,而外部排序则用于处理大规模数据,需要利用外部存储设备完成。
本章假设待排序的记录以顺序存储结构存放,记录的关键字为整数,且按递增顺序排序。为了简化算法,数组下标从1开始。通过掌握这些排序方法,不仅可以理解排序的原理,还能提高数据处理的效率。