第八章排序 甚本概念 排序的定义 二、内部排序 三、内部排序方法的分类 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 第八章 排序 一、排序的定义 二、内部排序 三、内部排序方法的分类 基本概念
排序基本概念 排序(sort)或分类 所谓排序,就是要整理文件中的记录,使 之按关键字递增(或递减)次序排列起来。其确 切定义如下: 的关键字分别为,…。,其相应 输入:n个记录R1,R2,…,R 输出:R1,R12,…,R,使得 K1≤K12≤≤Kn。(或K≥K12≥,K1) 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 一 排序基本概念 排序(sort)或分类 所谓排序,就是要整理文件中的记录, 使 之按关键字递增(或递减)次序排列起来。其确 切定义如下: 输入:n个记录R1,R2,…,Rn,其相应 的关键字分别为K1,K2,…,Kn。 输出:Ril,Ri2,…,Rin,使得 Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)
1.被排序对象一文件 被排序的对象-文件由一组记录组成。 记录则由若干个数据项(或域)组成。其中 有一项可用来标识一个记录,称为关键字项。 该数据项的值称为关键字(Key) 注意:在不易产生混淆时,将关键字项简称 为关键字。 2.排序运算的依据一关键字 用来作排序运算依据的关键字,可以是数字 类型,也可以是字符类型。 关键字的选取应根据问题的要求而定。 <心 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 1.被排序对象--文件 被排序的对象--文件由一组记录组成。 记录则由若干个数据项(或域)组成。其中 有一项可用来标识一个记录,称为关键字项。 该数据项的值称为关键字(Key)。 注意: 在不易产生混淆时,将关键字项简称 为关键字。 2.排序运算的依据--关键字 用来作排序运算依据的关键字,可以是数字 类型,也可以是字符类型。 关键字的选取应根据问题的要求而定
【例】在高考成绩统计中将每个考生作为一个 记录。每条记录包含准考证号、姓名、各科的 分数和总分数等项内容。若要惟一地标识一个 考生的记录,则必须用"准考证号"作为关键字 若要按照考生的总分数排名次,则需用"总分 数"作为关键字。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 【例】在高考成绩统计中将每个考生作为一个 记录。每条记录包含准考证号、姓名、各科的 分数和总分数等项内容。若要惟一地标识一个 考生的记录,则必须用"准考证号"作为关键字。 若要按照考生的总分数排名次,则需用"总分 数"作为关键字
排序的稳定性 当待排序记录的关键字均不相同时,排序结 果是惟一的,否则排序结果不唯 在待排序的文件中,若存在多个关键字相同 的记录,经过排序后这些具有相同关键字的记 录之间的相对次序保持不变,该排序方法是稳 定的;若具有相同关键字的记录之间的相对次 序发生变化,则称这种排序方法是不稳定的。 注意 排序算法的稳定性是针对所有输入实例而 言的。即在所有可能的输入实例中,只要有 个实例使得算法不满足稳定性要求,则该排序 算法就是不稳定的。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 排序的稳定性 当待排序记录的关键字均不相同时,排序结 果是惟一的,否则排序结果不唯一。 在待排序的文件中,若存在多个关键字相同 的记录,经过排序后这些具有相同关键字的记 录之间的相对次序保持不变,该排序方法是稳 定的;若具有相同关键字的记录之间的相对次 序发生变化,则称这种排序方法是不稳定的。 注意: 排序算法的稳定性是针对所有输入实例而 言的。即在所有可能的输入实例中,只要有一 个实例使得算法不满足稳定性要求,则该排序 算法就是不稳定的
排序方法的分类 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个记录的有序区