- 0
- 0
- 约5.85千字
- 约 40页
- 2019-03-09 发布于福建
- 举报
第九章可 排序
第九章 排序 概 述 排序:将一组杂乱无章的数据按一定的规律顺次排列起来。 文件: 它是待排序数据对象的有限集合。 关键词(关键字、关键码)域(key): 通常数据对象有多个属性域,即多个数据成员组成,其中存在一个属性域可用来区分对象,作为排序依据,该域即为关键词域。每个文件用哪个属性域作为关键词域,要视具体的应用需要而定。即使是同一个文件表,在解决不同问题的场合也可能取不同的域做关键词域。 概 述 记录:R1,R2,…,Rn 关键词:K1,K2,…,Kn; 关键词的全序( )性质: 对于任意三个关键词的取值 a,b,c,满足 (1)ab、a=b、ba三者必仅居其一(三分律); (2)若ab且bc,则有ac(传递性)。 排序:记录按关键词域递增或递减的顺序排列 排序的目标就是寻找一个置换: 使得各关键词按照非递减的次序排列,即有 主关键词: 如果在数据表中各个对象的关键词互不相同,这种关键词即主关键词。按照主关键词进行排序,排序的结果是唯一的。 次关键词: 数据表中有些对象的关键词可能相同,这种关键词称为次关键词。按照次关键词进行排序,排序的结果可能不唯一。 内排序与外排序 内排序—— 在内存中进行的排序 外排序—— 排序过程还要访问外存(因为待排记录的数量太大,内存容纳不下) 内排序分类 插入排序(直接插入,shell排序) 交换排序(起泡排序,快速排序) 选择排序(直接选择,堆排序) 归并排序(外排序常用) 基数排序(分配排序) 存储结构 顺序表(常用) ? 问题:大量的记录移动 链表:一般是静态链(数组内部加入一个下标域) ? 例如表插入,链式基数排序 ? 好处:减少记录结点移动(大记录用此法) ? 二分法表插入、快速排序、堆排序不可用 链表 索引表 排序的时间开销: 排序的时间开销是衡量算法好坏的最重要的标志。排序的时间开销可用算法执行中关键词的比较次数与记录的移动次数来衡量。 各节给出算法运行时间代价的大略估算一般都按平均情况进行估算。对于那些受对象关键词序列初始排列及对象个数影响较大的,需要按最好情况和最坏情况进行估算。 算法执行时所需的附加存储空间: 评价算法好坏的另一标准。 9.1 插入排序 直接插入排序 对半插入排序 希尔排序 表插入排序 9.1 插入排序 9.1.1 直接插入排序 直接插入排序思想: 将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增一的有序表。 9 15 23 28 37 20 排序算法 将n个记录的文件分为已有序和无序两个部分。每次处理就是将无序部分的第一个元素与有序部分的记录从后往前逐个进行比较,找出插入位置,将该元素插入到有序部分的合适位置中。 排序方法: 第一步:R1; 第二步: R1 , R2 第三步: R1 , R2, R3 … … 第j步:R1,R2,…,Rj–1, Rj; … … 第n步,R1,R2,…,Rn–1 ,Rn. 插入排序的算法 算法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–1 ) . ? Ri+1←R ) ▌ 带有哨兵结点的插入排序算法 算法InsertSortA( R,s, e ) //已知K s-1≤min{Ki |s≤i≤e} ISA1 [逐一排序] FOR j=s+1 TO e DO ( i←j–1 . K←Kj . R←Rj . WHILE K<Ki DO ? ( Ri+1←Ri . ? i←i–1 ) . ? Ri+1←R ) ▌ ?
您可能关注的文档
最近下载
- JVC摄像机GR-DX300AG用户手册.pdf
- 第1课 《邓稼先》:拳拳赤子心,璀璨星空梦(课件)-【大单元教学】七年级语文下册(统编版2024).pptx
- Netvault带库配置操作指引.docx VIP
- 《Netvault配置指南》课件.pptx VIP
- BRW500-31.5F型乳化液泵组随机图册教程.doc VIP
- NetVault Backup 简易操作指南.pdf VIP
- 曙光备份系统软件指南NetVault.pdf VIP
- 2024年青岛自招物理试题.docx VIP
- 2024年初中八年级下册名著《经典常谈》重点知识+内容概括+真题练习.pdf VIP
- 2025年八年级语文下册必读名著阅读《经典常谈》重点知识+内容概括+真题练习.docx VIP
原创力文档

文档评论(0)