吉林大学数据结构课件 第七章 排序.pptx
文本预览下载声明
排 序概 述排序:排序指按规定的顺序排列一个给定对象集合中的诸元素 。文件: 它是待排序数据对象的有限集合。记录:R1,R2,…,Rn关键词域(key): 通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为关键词域。每个文件用哪个属性域作为关键词,要视具体的应用需要而定。即使是同一个文件表,在解决不同问题的场合也可能取不同的域做关键码。概 述主关键词: 如果在数据表中各个对象的关键码互不相同,这种关键码即主关键码。按照主关键码进行排序,排序的结果是唯一的。次关键词: 数据表中有些对象的关键码可能相同,这种关键码称为次关键码。按照次关键码进行排序,排序的结果可能不唯一。概 述排序:记录按关键词域递增或递减的顺序排列n个记录相应的关键词:K1,K2,…,Kn在关键词域上定义一个次序关系“” ,使得对于任意三个关键词的取值a、b、c,下列条件成立:在ab,a=b,ba 三个可能性中,有且只有一个可能性成立(三分率);如果ab,并且bc,则有ac(传递性). 这两个性质显示了线性次序的数学性质,也称作全序. 概 述排序:记录按关键词域递增或递减的顺序排列n个记录相应的关键词:K1,K2,…,Kn在关键词域上定义一个次序关系“” ;排序的目标就是寻找一个置换 : 使得诸关键词按照非递减的次序排列,即有 Kρ(1)≤Kρ(2)≤…≤Kρ(n) i123456789Ki070902160805121413ρ(i)351942687Kρ(i)020507080912131416 排序的时间开销: 排序的时间开销是衡量算法好坏的最重要的标志。排序的时间开销可用算法执行中关键词的比较次数与数据的移动次数来衡量。各节给出算法运行期望时间代价是对按平均情况进行估算。对于那些受对象关键词序列初始排列及对象个数影响较大的,需要按最好情况和最坏情况进行估算。算法执行时所需的附加存储空间: 评价算法好坏的另一标准。排序算法的稳定性:当Kρ(i)=Kρ(j)并且ij时,总有ρ(i)ρ(j),这里1≤i,j≤n,则我们就称该排序过程具有稳定性. 排序的时间开销(时间复杂性)算法执行时所需的附加存储空间(空间复杂性)排序算法的稳定性算法基本思想 插入排序,交换排序,选择排序,合并排序算法适用条件 分类: 内排序和外排序 升序和降序 存储: 数组和链表 7.1 插入排序插入排序思想: 将一个记录插入到已排好序的有序表中,从而 得到一个新的、记录数加一的有序表。 (9 15 23 28 37) 20 (9 15 ?? 23 28 37) 20 有序序列R[1..j-1]R[j]无序序列 R[j+1..n]排序方法:R1,R2,…,Rn–1, Rn.第一步:R1;第二步: R1 , R2 第三步: (R1 , R2), R3… …第j步: ( R1,R2,…,Rj–1), Rj;… …第n步: ( R1,R2,…,Rn–1),Rn.关键问题:如何找到插入位置???( R1,R2,…,Rj–1)Rj直接插入排序直接插入排序思想:从后向前依次和每个记录比较,找到插入位置。有序序列R[1..j-1]R[j]无序序列 R[j+1..n]i 直接插入排序的算法算法InsertSort ( R,n ) /* 本算法排列n个记录,使得它们相应的关键词排列成一个非递减的序列 */IS1 [逐一排序] FOR j=2 TO n DO (i←j–1.// 每次循环Rj插入到R1,…,Rj–1中 K←Kj . R←Rj . WHILE i>0 AND K<Ki DO ? ( Ri+1←Ri . ? i←i–l ) . ? Ri+1←R ) ▌492525*252116j = 2081 2 3 4 5 6temp各趟排序结果492525*2116081 2 3 4 5 6i←j–1. K←Kj . R←Rj. //i=1,K=25,R=R2WHILE i>0 AND K<Ki DO ? ( Ri+1←Ri .i←i–l ) . ?Ri+1←R492525*252116j = 2081 2 3 4 5 6tem2116j = 3081 2 3 4 5 6temp各趟排序结果492525*2116081 2 3 4 5
显示全部