数据结构精品课件-排序的基本概念和插入类排序.pptVIP

数据结构精品课件-排序的基本概念和插入类排序.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * 9.1 排序的基本概念 9.2 插入类排序 9.3 交换类排序法 9.4 选择类排序法 9.5 归并排序 9.6 分配类排序 9.7 各种排序方法的综合比较 第九章 内部排序 9.8 总结与提高 一、排序的定义   排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 例如:将如下序列 52, 49, 80, 36, 14, 58, 61, 23, 97, 75 调整为 14, 23, 36, 49, 52, 58, 61 ,75, 80, 97 9.1 排序的基本概念 设含 n 个记录的序列为 { R1, R2, …, Rn } 其相应的关键字序列为 { K1, K2, …,Kn } 记录关键字相互之间可以进行比较,即存在关系 : Kp1≤Kp2≤…≤Kpn 按此关系将上述记录序列调整为 { Rp1, Rp2, …,Rpn } 的操作称作排序。 定义: 设待排序记录序列中有关键字相等的记录, 即ki=kj(ij), 且在排序前Ri领先于Rj. 若排序后可以保证Ri仍领先于Rj, 则所用的排序方法称为稳定的; 若排序后不能保证Ri仍领先于Rj, 则所用的排序方法称为不稳定的. 二、稳定的排序和不稳定的排序 例如: 排序前 ( 56, 34, 47, 23, 66, 18, 82, 47 ) 若排序后必有结果: ( 18, 23, 34, 47, 47, 56, 66, 82 ) 则称该排序方法是稳定的; 若排序后可能得结果: ( 18, 23, 34, 47, 47, 56, 66, 82 ) 则称该排序方法是不稳定的。   若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。 反之, 若参加排序的记录数量很大, 整个序列的排序过程不可能在内存 中完成,则称此类排序问题为外部排序。 三、内部排序和外部排序 1、顺序存储:移动记录实现排序; 2、(静态)链表:修改指针(游标)实 现排序; 3、地址向量:移动地址实现排序; (又称地址排序) 四、内部排序的存储方式 本课程我们重点讨论在顺序存储结构上,各种排序方法的实现。 返回 9.2 插入类排序   将无序序列中的记录一个一个的 “插入”到有序序列中的恰当位置,以逐渐增加有序序列的长度K(K=1 N), 从而实现排序。 基本思想: 有序序列r[1..i-1] r[i] 无序序列 r[i..n] 有序序列r[1..i] 无序序列 r[i+1..n] 找位置 插入 一趟插入排序的基本过程: 实现“一趟插入排序”可分三步进行: 3.插入:将r[i] 插入(复制)到r[j+1]的位置上。 2.后移:将r[j+1..i-1]中的所有记录均后移一个位置; 1.查找插入位置:在r[1..i-1]中查找r[i]的插入位置j+1 : r[1..j].key ? r[i].key r[j+1..i-1].key; 直接插入排序(基于顺序查找) 不同的具体实现方法导致不同的算法描述 折半插入排序(基于折半查找) 希尔排序(基于逐趟缩小增量)   利用 “顺序查找”实现 “在r[1..i-1]中查找r[i]的插入位置” 算法的实现: 一、直接插入排序 1. 从r[i-1]起向前进行顺序查找, 循环结束确定r[i]的插入位置为 j +1; r[0] j r[i] j=i-1 插入位置 2. 将所有 j+1…i-1 的记录向后移动 1位; j j j 3. 将r[0](原r[i])“插入”到j+1的位置。 监视哨设置在r[0]; 可以在查找的同时实现记录向后移动; r[0]=r[i]; j=i-1; while( r[0].key r[j].key) { r[j+1]= r[j]; j=j-1;} r[0] j r[i] j= i-1 上述循环结束后可以直接进行“插入” 插入位置 方法的改进: 令 i = 2,3,…, n, 可实现整个序列的排序。 Void inssort(recordtype r[ ], int n) {for(i=2;i=n; i++) {r[0]=r[i]; j=i-1; while(r[0].key r[j].key) { r[j+1]= r[j];

文档评论(0)

极研教育 + 关注
官方认证
服务提供商

SAC证券行业专业人员持证人

承接各类可行性研究报告撰写,详情加v:JiYan-edu

认证主体 天津西青区极研智慧智能科技有限公司
IP属地天津
领域认证 该用户于2023年10月01日上传了SAC证券行业专业人员
统一社会信用代码/组织机构代码
91120111MA07276K52

1亿VIP精品文档

相关文档