- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9 内部排序 9.1 概述 9.1.3 稳定性 若记录序列中的任意两个记录 Rx、Ry 的 关键字 Kx = Ky ;如果在排序之前和排序之后, 它们的相对位置保持不变,则这种排序方法是 稳定的,否则是不稳定的。 例如: ……ki…….kj…….. 排序后:……….kikj……….. ki==kj, ij, 排序过程中ki和kj的位置始终 不会被改变。 9.1.4 排序所涉及的操作 (1)比较,基于关键字(key) (2)移动,对于整条记录 9.1.5 数据结构 typedef struct { keytype key; ………… } recordtype; recordtype r[maxn+1]; // maxn:表的容量,r[0]:监视哨 9.4 选择排序 9.4.2 堆排序 二、排序策略 (1)构造堆 按堆的定义将r[1]..r[n]调整为堆。 (2)r[n]与r[1]互换,将r[1]..r[n-1]调整为堆。再将r[n-1]与 r[1]互换,将r[1]..r[n-2]调整为堆。……,直至排序完成。 问题:如何实现堆的调整? 用筛选法实现。 (1)左右孩子比较 (2)父子比较 void sift ( int i, int m){ //筛选算法 //把以 t 为根的完全二叉树r[i]..r[m]调整成一个堆 //初值:i的左右子树均是堆 int j=i*2; //j指向左孩子 r[0]=r[i] //将r[i]暂存到r[0]中 while (j=m) { if ( jm r[j].keyr[j+1].key ) j++; // 左孩子与右孩子进行比较, 找较大孩子,确定筛选的方向 if ( r[0].key r[j].key ) { r[i] = r[j]; i=j; j=2*i; } //继续筛选 else j=m+1; //筛选完毕 } r[i] = r[0]; } void heatsort ( ){ // 将r[1]..r[n]进行堆排序 for (j=n/2;j=1;j--) Sift ( j, n ) //建堆,得最大值r[1] for (j=n;j=2;j--){ r[0]=r[1]; r[1]=r[j]; r[j]=r[0]; //堆顶(根)结点与最后结点的值对换 sift (1, j-1 ) ; //调整堆 } } 六、算法分析 (1)时间分析 sift(j,n)的时间是O(log2n)。 建立堆的过程O(n)。 堆排序的时间=建立堆+(n-1)次调整堆 T(n)=O (nlog2n) (2)空间分析 S(n)=O(1) (3)稳定性 堆排序方法是不稳定的排序方法。因为父子比较及交换是在第i个元素和第2i个元素或第2i+1元素之间进行,在移动过中原两个相同大小的记录的位置会有变化。 七、适用范围 (1)n较大。 (2)选取前k(kn)个最小元素时。 八、进一步思考 以链表为存储结构,可以实现该算法吗? 比较堆排序与直接选择排序? 9.5 归并排序 一、排序策略 将两个有序表归并为一个新的有序表。 二、排序示例 三、排序算法 void merge (int h, int m, int n){ // 将两个有序表r[h]..r[m]和r[m+1]..r[n]归并为一个新的有序表r[h]..r[n] i=h; j=m+1; k=h; //初值, i,j,k为 指示器 while( i=m j=n ) { if (r[i].key = r[j].key) s[k++]=r[i++]; else s[k++]=r[j++]; //将数值小的元素放在数组s中 while (i=m) s[k++]=r[i++]; //指示器j的数值已经越界 while
您可能关注的文档
最近下载
- 发育生物学教学课件08-1 原肠作用.ppt VIP
- 【中考真题】2025年安徽省中考数学试题(含解析).docx VIP
- 2025年职业资格大学辅导员笔试-笔试参考题库含答案解析(5套试卷).docx VIP
- 一种电池模组手动入箱定位及导向机构.pdf VIP
- 边立新:《路德维希·费尔巴哈和德国古典哲学的终结》导读.ppt VIP
- 纳米氢氧化镁晶须的制备及其分散性研究.docx VIP
- 肥厚型心肌病护理查房.pptx VIP
- 2025年内河码头行业现状分析报告及未来五至十年发展前景预测报告.docx
- 领导德性量表的编制.docx VIP
- 石化受限空间作业标准化管理方案-图文并茂版.pptx VIP
文档评论(0)