- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Procedure Sift(Var R :FileType; I, M : Integer);//在数组R[I..M]中调用R[I],使得以它为完全二叉树构成堆。事先已知其左、右子树(2I+1 =M时)均是堆//Begin??X := R[I]; J := 2*I; //若J =M, R[J]是R[I]的左孩子//??While J = M Do //若当前被调整结点R[I]有左孩子R[J]//???begin????If (J M) And R[J].Key R[J+1].Key Then??????J := J + 1 //令J指向关键字较大的右孩子//????????//J指向R[I]的左、右孩子中关键字较大者//????If X.Key R[J].Key Then //孩子结点关键字较大//??????begin????????R[I] := R[J]; //将R[J]换到双亲位置上//????????I := J ; J := 2*I //继续以R[J]为当前被调整结点往下层调整//??????end;?????Else??????Exit//调整完毕,退出循环//???end??R[I] := X;//将最初被调整的结点放入正确位置//End;//Sift//
Procedure HeapSort(Var R : FileType); //对R[1..N]进行堆排序// Begin For I := N Div Downto 1 Do //建立初始堆// Sift(R, I , N) For I := N Downto 2 do //进行N-1趟排序// begin T := R[1]; R[1] := R[I]; R[I] := T;//将当前堆顶记录和堆中最后一个记录交换// Sift(R, 1, I-1) //将R[1..I-1]重成堆// end End; //HeapSort//
六、几种排序算法的比较和选择 1. 选取排序方法需要考虑的因素:(1) 待排序的元素数目n;(2) 元素本身信息量的大小;(3) 关键字的结构及其分布情况;(4) 语言工具的条件,辅助空间的大小等。2. 小结:(1) 若n较小(n = 50),则可以采用直接插入排序或直接选择排序。由于直接插入排序所需的记录移动操作较直接选择排序多,因而当记录本身信息量较大时,用直接选择排序较好。(2) 若文件的初始状态已按关键字基本有序,则选用直接插入或冒泡排序为宜。(3) 若n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序。 快速排序是目前基于比较的内部排序法中被认为是最好的方法。(4) 在基于比较排序方法中,每次比较两个关键字的大小之后,仅仅出现两种可能的转移,因此可以用一棵二叉树来描述比较判定过程,由此可以证明:当文件的n个关键字随机分布时,任何借助于比较的排序算法,至少需要O(nlog2n)的时间。(5) 当记录本身信息量较大时,为避免耗费大量时间移动记录,可以用链表作为存储结构。
?
分治策略 相关知识: 一维数组 | 多维数组 | 栈 | 队列 | 串 | 回溯
一、算法思想
任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题规模越小,解题所需的计算时间往往也越少,从而也越容易计算。想解决一个较大的问题,有时是相当困难的。分治法的思想就是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。
分治的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。找出各部分的解,然后把各部分的解组合成整个问题的解。
1、解决算法实现的同时,需要估算算法实现所需时间。分治算法时间是这样确定的: 解决子问题所需的工作总量(由 子问题的个数、解决每个子问题的工作量 决定) 合并所有子问题所需的工作量
2、分治法是把任意大小问题尽可能地等分成两个子问题的递归算法
3、分治的具体过程: begin {开始} if ①问题不可分 then ②返回问题解 else begin ③从原问题中划出含一半运算对象的子问题1; ④递归调用分治法过程,求出解1; ⑤从原问题中划出含另一半运算对象的子问题2; ⑥递归调用分治法过程,求出解2; ⑦将解1、解2组合成整修问题的解; end; end; {结束}
二、例题分析
1、[金块问题]老板
您可能关注的文档
- 操作系统实验1(附加内容).doc
- 操作系统实验08.doc
- 操作系统实验说明2009版.doc
- 操作系统实验指导2.doc
- 操作系统实验指导2-3.doc
- 操作系统实验指导2003.doc
- 操作系统实验指导书(计算机应用系参考资料).doc
- 操作系统实验指导书UNIX.doc
- 操作系统实验指导书-确定稿.doc
- 操作系统试验大纲指导.doc
- 2022-2023学年江苏省常州市溧阳市四年级下学期期中数学真题及答案.pdf
- 2022-2023学年江苏盐城建湖县五年级上册语文期末试卷及答案.pdf
- 2021-2022学年河南省卫辉市人教版三年级上册期末考试数学试卷及答案.pdf
- 2022-2023学年浙江杭州萧山区五年级下册语文期中试卷及答案.pdf
- 2022-2023学年江苏省淮安市二年级下学期数学月考试题及答案.pdf
- 2021年山西公务员申论考试真题及答案-乡镇.pdf
- 2021年普通话考试内容题库最新版.pdf
- 2021-2022年江苏苏州太仓市六年级上册期中语文试卷及答案(部编版).pdf
- 2022-2023学年山东省滨州市博兴县四年级下学期期末数学真题及答案.pdf
- 2021年四川内江小升初语文真题及答案.pdf
最近下载
- 2025-2030中国靛蓝染料行业市场发展趋势与前景展望战略研究报告.docx
- DGTJ08-2299-2019 型钢混凝土组合桥梁设计规范.pdf VIP
- 班主任带班育人方略PPT课件.pptx VIP
- 2024年山东省日照市中考生物真题卷(含答案与解析).pdf VIP
- 小学六年级上学期美术《第12课 走向明天》教学课件.pptx VIP
- 科斯定理_反思与拓展_兼论中国农地流转制度改革与选择_罗必良.pdf VIP
- catia电气设计操作手册.pdf VIP
- 八下《卖炭翁》选择题专练-冲刺2024年中考语文古代诗歌课内篇目常考题型专练(统编版六册)(解析版).docx VIP
- 2025年国开电大机考网考-经济学基础-真题(2).docx
- 广东省深圳市南山区2024-2025学年上学期期末教学质量监测七年级英语试题(含答案).pdf VIP
文档评论(0)