- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析第2章 排序算法
第2章 排序算法 主学习要点 一、偏序集 二、排序的一般方法 三、堆排序 四、快速排序 五、线性时间排序 六、中数排序 主要内容 2.1 排序 2.2 堆排序 2.3 快速排序 2.4 线性时间排序 2.5 中数排序 2.1 排序 2.1.1排序问题 排序(Sorting)是最常见的一种典型非数值计算。排序问题的输入一个线性表,要求对该线性表的元素重排,是得表中的元素递增(或递减)排列 1.偏序集 设R是非空集合A上的二元关系,x,y,z∈R,如果R满足: 1 自反性(∨x ∈ A,(x,x) ∈ R) 2 反对称性((x,y) ∈ R ∧ (y,x) ∈ R?x=y) 3 传递性 ((x,y) ∈ R ∧ (y,z) ∈ R?(x,z) ∈ R) 则称R为A上的偏序关系,记作≤ 2. 原地置换排序算法 排序算法利用输入的线性表在原地重排其中的元素,且没有额外的内存开销 3.稳定排序算法 排序后表中相同原始的相对位置没有发生改变 4. 内外排序 根据排序是是否访问外存 2.1.2冒泡排序 Bubble_Sort(A) 1 for i?1 to length[A]-1 2 for j?n to I 3 if (A[j]A[j-1]) 4 swap(A[j],A[j-1]); 5 j?j-1 6 i?i+1 2.1.3 交换排序 交换排序的思路是每次用当前的元素同其后元素一一比较交换 2.1.3 交换排序 Exchange_Sort(A) 1 for i?0 to length[A]-1 2 for j?j=i+1 to length[A] 3 if (A[j]A[i]) 4 swap(A[j],A[i]) 5 j?j+1 6 i?j+1 2.1.4 选择排序 选择排序是指先从数据中选择最小的同第一个值交换,再从剩下的部分中选择最小的与第二个值交换,如此反复直至所有的数据均有序。 2.1.4选择排序 Select_Sort(A) 1 int iTemp 2 int iPos; 3 for i?0 to length[A]-1 4 iTemp?A[i] 5 iPos?I; 6 for j?i+1 to length[A] 7 if A[j]iTemp 8 iTemp?A[j] 9 iPos?j; 10 A[iPos]? A[i] 11 A[i]?iTemp 12 i?i+1 2.1.5 插入排序 插入排序是从无序部分不经选择,随机抽取一个元素,然后插入到有序的部分的正确位置上。 2.1.5插入排序 Insertion_Sort(A) 1 for j?2 to length[A]-1 2 do key?A[j] 3 i?j-1 4 while i0 and A[j]key 5 do A[i+1]?A[i] 6 i?i-1; 7 A[i+1]?key; 2.2 堆排序 堆排序在最坏和平均情况下的时间复杂度都为O(nlogn),而且它是一种原地置换的算法,即在任何时候,数组中仅有固定数目的元素存在数组外。 2.2.1 堆 堆是一种数组对象,其定义如下: n个元素的序列{k1,k2, … ,kn}当前仅当满足以下关系时,则称之为堆。 (a) ki ≥k2i (b) ki≤k2i ki ≥ k2i+1 ki ≤ k2i+1 (a)是大顶堆 (b)是小定堆 2.2.2 建堆 HEAPIFY是对堆进行操作的重要过程,其输入为一个数组A和小标i.当HEAPIFY被调用时,假定以LEFT(i)和RIGHT(i)为根的两棵子树都已是堆,A[i]可能小于其子女,这与堆得定义不符。只需要自上而下进行调整,将A[i]放到合适的位置,得到一个新的堆,称这种自堆顶至叶子的调整过程为“筛选” HEAPIFY(A,i,length) 1 l?LEFT(i) 2 r?RIGHT(i) 3 if l=length and A[l]A[i] 4
您可能关注的文档
- 第四章 物质的跨膜运输 细胞生物学课件.ppt
- 第四章 滨海沉积 海洋地质学 教学课件.ppt
- 第四章 独立基础-总结归纳(第二期) 土地继续教育课件.ppt
- 第四章 理性与非理性 《管理定律与博弈游戏》教学课件资料.ppt
- 第四章 生产与运作系统的布局 生产与运作管理课件.ppt
- 第四章 灰分及几种矿物元素的测定.ppt
- 第四章 环境规划与管理的.ppt
- 第四章 生产理论 微观经济学教学课件.ppt
- 第四章 生产与成本 媒介经济学PPT.ppt
- 第四章 用例建模 研究生课程-MDA教学课件.ppt
- 江苏省苏州工业园区2024-2025学年八年级下学期期末调研英语试卷(含答案,无听力原文及音频).pdf
- 江苏省常州高级中学2024-2025学年高一下学期6月期末考试信息技术试卷(含答案).pdf
- 天津市西青区当城中学2024-2025学年高二下学期6月月考英语试题(含答案).pdf
- 湖南省岳阳市湘阴县长仑四校2024-2025学年八年级下学期6月期末道德与法治试题(含答案).pdf
- 江西省新余市实验中学2024-2025学年高三下学期5月冲刺模拟历史试题(含答案) (1).pdf
- 浙江省嘉兴市2024-2025学年高二下学期期末检测历史试题(含答案).pdf
- 暑假备战高考英语全国猜题卷五.pdf
- 江苏省淮安市涟水县 2024-2025学年七年级下学期期末道德与法治试卷(含答案).pdf
- 江苏省宿迁市泗阳县2024-2025学年高二下学期期末考试政治试卷(含答案).pdf
- 江西省新余市实验中学2024-2025学年高三下学期5月冲刺模拟历史试题(含答案).pdf
文档评论(0)