[高等教育]第十章-内部排序.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[高等教育]第十章-内部排序

第十章 内部排序 10.1 概述 10.2 插入排序 10.2.1 直接插入排序 10.2.3 希尔排序 10.3 快速排序 10.4 选择排序 10.4.1 简单选择排序 10.4.3 堆排序 10.5 归并排序 10.7 各种内部排序方法的比较讨论 10.1 概述 排序:将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。 含n个记录的序列为{R1,R2, …,Rn},其相应的关键字序列为{K1,K2, …,Kn},假设Ki=Kj(i≠j),且在排序前的序列中Ri领先于Rj,若在排序后的序列中Ri仍领先于Rj,则称所用的排序方法是稳定的;反之,若可能是排序后的序列中Ri领先于Rj,则称所用的排序方法是不稳定的。 排序分类 按待排序记录所在位置 内部排序:待排序记录存放在内存 外部排序:排序过程中需对外存进行访问的排序 按排序依据原则 插入排序:直接插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、堆排序 归并排序:2-路归并排序 基数排序 排序的基本操作 比较两个关键字大小 将记录从一个位置移动到另一个位置 待排记录的数据类型 #define MAXSIZE 20 //待排序记录数目 typedef int KeyType; //关键字类型 typedef struct{ KeyType key; //关键字项 InfoType otherinfo; //其它数据项 }RedType; //记录类型 typedef struct{ RedType r[MAXSIZE+1]; //r[0]闲置或用作哨兵单元 int length; }SqList; //顺序表类型 10.2 插入排序 基本原理:每步将一个待排序的对象,按其关键字大小,插入到前面已经排好序的一组对象适当位置上,直到对象全部插入为止。 分类 直接插入排序(Insert Sort) 希尔排序(Shell Sort) 10.2.1 直接插入排序 排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序。 将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 例:序列为{49,38,65,97,76,13,27,49} {(49),38,65,97,76,13,27,49} i=2: (38) {(38,49),65,97,76,13,27,49} i=3: (65) {(38,49,65),97,76,13,27,49} i=4: (97) {(38,49,65,97),76,13,27,49} i=5: (76) {(38,49,65,76,97),13,27,49} i=6: (13) {(13,38,49,65,76,97),27,49} i=7: (27) {(13,27,38,49,65,76,97),49} i=8: (49) {(13,27,38,49,49,65,76,97)} void InsertSort(SqList L) { //对顺序表做直接插入排序 for(i=2; i=L.length; ++i) if ( LT(L.r[i].key, L.r[i-1].key) ){ L.r[0] = L.r[i]; // 复制为哨兵 L.r[i] = L.r[i -1]; for(j=i - 2; LT(L.r[0].key, L.r[j].key); --j) L.r[j+1] = L.r[j]; // 记录后移 L.r[j+1] = L.r[0]; //插入到正确的位置 } } // InsertSort 直接插入排序算法分析 时间: 最好情况:比较n-1次,不需要移动 最坏情况:比较(n+2)(n-1)/2次 移动(n+4)(n-1)/2次 时间复杂度: O(n2) 空间:一个辅助空间,辅助空间复杂度S(n)=O(1) 稳定性:一种稳定的排序方法 10.2.3 希尔(Shell)排序 希尔排序,又称缩小增量法 基本思想:对待排记录序列先作“宏观”调整,再作“微观”调整。 所谓“宏观”调整,指的是,“跳跃式”的插入排序。即:将记录序列分成若干子序列,每个子序列分别进行插入排

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档