排序方法的分类 1.按是否涉及数据的内、外存交换分 二m在排序过程中,若整个文件都是放在内存中 处理,排序时不涉及数据的内、外存交换则称之 为内部排序(简称内排序);反之若排序过程中要 进行数据的内、外存交换则称之为外部排序。 注意: ①内排序适用于记录个数不很多的小文件 ②外排序则适用于记录个数太多不能一次 将其全部记录放人内存的大文件。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 排序方法的分类 1.按是否涉及数据的内、外存交换分 在排序过程中,若整个文件都是放在内存中 处理,排序时不涉及数据的内、外存交换,则称之 为内部排序(简称内排序);反之,若排序过程中要 进行数据的内、外存交换,则称之为外部排序。 注意: ① 内排序适用于记录个数不很多的小文件 ② 外排序则适用于记录个数太多,不能一次 将其全部记录放人内存的大文件
2.按策略划分内部排序方法 可以分为五类:插入排序、选择排序、交 换排序、归并排序和分配排序。 排序算法分析 1.排序算法的基本操作 大多数排序算法都有两个基本的操作: (1)比较两个关键字的大小; (2)改变指向记录的指针或移动记录本身。 注意: 第(2)种基本操作的实现依赖于待排序记录的存储方式 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 2.按策略划分内部排序方法 可以分为五类:插入排序、选择排序、交 换排序、归并排序和分配排序。 排序算法分析 1.排序算法的基本操作 大多数排序算法都有两个基本的操作: (1) 比较两个关键字的大小; (2) 改变指向记录的指针或移动记录本身。 注意: 第(2)种基本操作的实现依赖于待排序记录的存储方式
2.待排文件的常用存储方式 (1)以顺序表(或直接用向量)作为存储结构 排序过程:对记录本身进行物理重排(即通过关键 字之间的比较判定,将记录移到合适的位置) (2)以链表作为存储结构 排序过程:无须移动记录,仅需修改指针。通常将 这类排序称为链表(或链式排序; (3)用顺序的方式存储待排序的记录,但同时建立 个辅助表(如包括关键字和指向记录位置的指针组成的 索引表) 排序过程:只需对辅助表的表目进行物理重排(即 只移动辅助表的表目,而不移动记录本身)。适用于难 于在链表上实现,仍需避免排序过程中移动记录的排序 方法。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 2.待排文件的常用存储方式 (1)以顺序表(或直接用向量)作为存储结构 排序过程:对记录本身进行物理重排(即通过关键 字之间的比较判定,将记录移到合适的位置) (2) 以链表作为存储结构 排序过程:无须移动记录,仅需修改指针。通常将 这类排序称为链表(或链式)排序; (3) 用顺序的方式存储待排序的记录,但同时建立一 个辅助表(如包括关键字和指向记录位置的指针组成的 索引表) 排序过程:只需对辅助表的表目进行物理重排(即 只移动辅助表的表目,而不移动记录本身)。适用于难 于在链表上实现,仍需避免排序过程中移动记录的排序 方法
3.排序算法性能评价 (1)评价排序算法好坏的标准 评价排序算法好坏的标准主要有两条: ①执行时间和所需的辅助空间 ②算法本身的复杂程度 (2)排序算法的空间复杂度 若排序算法所需的辅助空间并不依赖于问题的规模n, ≥即辅助空间是0(),则称之为就地排序(In- Placesou) ●非就地排序一般要求的辅助空间为0(n)。 (3)排序算法的时间开销 大多数排序算法的时间开销主要是关键字之间的比 较和记录的移动。有的排序算法其执行时间不仅依赖于 题的规模,还取决于输入实例中数据的状态。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 3.排序算法性能评价 (1) 评价排序算法好坏的标准 评价排序算法好坏的标准主要有两条: ① 执行时间和所需的辅助空间 ② 算法本身的复杂程度 (2) 排序算法的空间复杂度 若排序算法所需的辅助空间并不依赖于问题的规模n, 即辅助空间是O(1),则称之为就地排序(In-PlaceSou)。 非就地排序一般要求的辅助空间为O(n)。 (3) 排序算法的时间开销 大多数排序算法的时间开销主要是关键字之间的比 较和记录的移动。有的排序算法其执行时间不仅依赖于 问题的规模,还取决于输入实例中数据的状态
插入排序 °插入排序( Insertion sort)的基本思想是:每 次将一个待排序的记录,按其关键字大小插入 到前面已经排好序的子文件中的适当位置,直 到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序 和希尔排序。 (一)直接插入排序基本思想 1、基本思想 假设待排序的记录存放在数组Rm中。 初始时,R自成1个有序区,无序区为R2nl 从i=2起直至in为止,依次将R印插入当前的有 序区R1中成含记录的有序区
武汉理工大学华夏学院-信息工程 系 二、插入排序 插入排序(Insertion Sort)的基本思想是:每 次将一个待排序的记录,按其关键字大小插入 到前面已经排好序的子文件中的适当位置,直 到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序 和希尔排序。 (一)直接插入排序基本思想 1、基本思想 假设待排序的记录存放在数组R[1..n]中。 初始时,R[1]自成1个有序区,无序区为R[2..n]。 从i=2起直至i=n为止,依次将R[i]插入当前的有 序区R[1..i-1]中,生成含n个记录的有序区