- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找与排序技术(new)简介
调整建堆输入:完全二叉树数组H(1:n)。其中结点H(m)的左右子树均为堆。输出:以H(m)为根结点的子树为堆。 PROCEDURE SIFT(H,n,m) t=H(m); j=2m WHILE (j≤n) DO { IF (j<n)and(H(j)<H(j+1)) THEN j=j+1 IF (t<H(j)) THEN { H(m)=H(j); m=j; j=2m } else j=n+1 } H(m)=t RETURN (1)首先将一个无序序列建成堆。 (2)然后将堆顶元素(序列中的最大项)与堆中最后 一个元素交换(最大项应该在序列的最后)。 不考虑已经换到最后的那个元素,只考虑前 n-1个元素构成的子序列,显然,该子序列已 不是堆,但左、右子树仍为堆,可以将该子序列 调整为堆。 反复做第(2)步,直到剩下的子序列为空为止。 堆排序输入:无序序列H(1:n)。输出:无序序列H(1:n)。PROCEDURE HEAPSORT(H,n)k=n/2FOR i=k TO 1 BY -1 DO SIFT(H,n,i) [无序序列建堆]FOR i=n TO 2 BY -1 DO {t=H(1);H(1)=H(i);H(i)=t[堆顶元素换到最后] SIFT(H,i-1,1) [调整建堆] }RETURN heapsort(p,n)int n; ET p[];{ int i,k; ET t; k=n/2; for (i=k-1; i>=0; i--) sift(p,n-1,i); /*无序序列建堆*/ for (i=n-1; i>=1; i--) { t=p[0]; p[0]=p[i]; p[i]=t; /*堆顶元素换到最后*/ sift(p,i-1,0); /*调整建堆*/ } return;} static sift(h,n,m)int n,m; ET h[];{ int j; ET t; t=h[m]; j=2*(m+1)-1; while (j<=n) { if ((j<n)(h[j]<h[j+1])) j=j+1; if (t<h[j]) { h[m]=h[j]; m=j; j=2*(m+1)-1;} else j=n+1; } h[m]=t; return;} 3.2.4 其他排序方法简介1. 归并排序设线性表L(1:n)中的某段L(low:high)已经部分有序,即它的两个子表L(low:mid)与L(mid+1:high)(其中low≤mid≤high)已经有序,现要将这两个有序子表归并成一个有序子表L(low:high)。 实现上述两个子表归并的基本做法如下: (1)开辟一个与线性表L同样大小的表空间A。 (2)设置三个指针i,j,k,其初始状态分别指向两个有序子 表的首部及表空间A中与L中需要进行排序段相对应空间 的首部。即i=low,j=mid+1,k=low。 (3)沿两个有序子表扫描: 若L(i)≤L(j),则A(k)=L(i),且i与k指针均加1; 否则A(k)=L(j),且j与k指针均加1。 如此反复,直到有一个子表的指针已经指到末端(即子 表内的元素已经取空)为止。 (4)将未取空的子表中的剩余元素依次放入表空间A中。 (5)将A中的对应段复制到L中。 两个相邻有序子表的合并输入:两个相邻有序子表L(low:mid)与L(mid+1:high) (其中low≤mid≤high);工作数组A(low:high)。输出:有序子表L(low:high)。PROCEDURE MERGE(L,low,mid,high,A)i=low,j=mid+1,k=lowWHILE (i≤mid)and(j≤high) DO { IF L(i)≤L(j) THEN { A(k)=L(i);i=i+1 } ELSE { A(k)=L(j);j=j+1 } k=k+1 } IF (i≤mid) THEN {FOR j=i TO mid DO { A(k)=L(j);k=k+1 }ELSE { IF (j≤high) THEN FOR i=j TO high D
您可能关注的文档
- 某桥现浇箱梁跨地面桥方案新资料.doc
- 某标段单元预警法实施工作总结资料.ppt
- 某污水处理厂设备安装及调试方案资料.doc
- 某法院办公楼装饰工程施工组织设计资料.doc
- 某派出所办公楼工程资料.doc
- 某海堤达标加固工程施工方案资料.doc
- 某热油管道工艺设计课程设计资料.doc
- 某热油管道工艺设计资料.doc
- 某煤矿井筒施工组织设计资料.doc
- 某煤矿施工组织设计资料.doc
- 广西百色市2023-2024学年高三第四次模拟考试英语试卷含解析.doc
- 云南峨山彝族自治县第一中学2024-2025学年高三第三轮考试语文试题含解析.doc
- 廊坊市重点中学2024届高考全国统考预测密卷语文试卷含解析.doc
- 辽宁省铁岭市第一高级中学2024年高三下学期第五次调研考试生物试题含解析.doc
- 梅州市重点中学2024年高考英语必刷试卷含解析.doc
- 西安理工大学高科学院《混凝土无损检测与质量控制》2023-2024学年第一学期期末试卷.doc
- 2025届西北工业大学附属中学高三下学期期末考试生物试题(理,A卷)含解析.doc
- 河北省永年二中2024届高考临考冲刺历史试卷含解析.doc
- 医务人员职业道德准则2025 年版测试题及答案.docx
- 医务人员职业道德准则2025年版政策解读及全文学习.pptx
文档评论(0)