- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 常用数据结构及其运算 简单选择排序算法 SELSORT(r,n) for i=1 to n-1 j←i for k=i+1 to n //找最小值所在的位置 // if (r[j] r[k]) then j←k end(k) if (ji) then r[i]?r[j] end(i) return INSERTSORT (r,n) for i=2 to n r[0]←r[i]; j←i-1 while (r[0]r[j]) do //从有序区最后一个位置找插入点// r[j+1]←r[j];j←j-1 end(while) r[j+1]←r[0] //在插入点之后插入// end(i) return 冒泡排序算法 BUBBSORT(r,n) F←n while (F0) do k←F-1; F←0; for j=1 to k if r[j]r[j+1] then { r[j]?r[j+1]; F←j} end(j) end(while) return 快速排序算法 Step1 分别从两端开始,指针i指向第一个元素A[left],指针j指向最后一个元素A[right],分界点取K= A[left] ; Step2 循环(i?j) 从右边开始进行比较: 若K ? A[j],则将A[j]交换到左边; 若K 〈 A[j] ,则 j=j-1,再进行比较; 从左边开始进行比较: 若K 〉 A[i],则 i=i+1,再进行比较; 若K ? A[i],则将A[i]交换到右边。 当i=j时,一次分解操作完成。 Step3 在对分解出的左、右两个子序列按上述步骤继续进行分解,直到子序列长度为1(不可再分)为止,也即序列全部有序。 * * 1. 排序的定义 就是把一组无序的记录按其关键字递增或递减的次序排列,便于数据的查找。 2.8 排序 2.8.1 排序的基本概念 2. 稳定排序和不稳定排序 对于{R1,R2,……,Rn},若有Ri=Rj, 在排序前Ri在Rj前,排序后Ri仍在Rj前,则称此排序方法是稳定的;反之为不稳定的。 2.8 排序 2.8.1 排序的基本概念 3. 内部排序和外部排序 内部排序:待排序记录存放在内存中进行排序。 外部排序:待排序记录数量很大,在排序过程中需 访问外存。 4. 基本操作 1)对记录中关键字大小进行比较; 2)将记录从一个位置移到另一个位置。 选择排序是不断在待排序序列(无序区)中按记录关键字递增(或递减)次序选择记录,放入有序区中,逐渐扩大有序区,直到整个记录区为有序区为止。 1. 简单选择排序 1)方法:在当前无序序列中选择一个关键字最小的记录,并将它和最前端的记录交换。重复此过程,则逐渐形成由小-大的有序区。 2.8 排序 2.8.2 选择排序 例:设有序列:{8 3 2 5 9 1 6 },排序过程为: i=0:[ 8 3 2 5 9 1 6 ] 6 1 3 i=1: 1 [3 2 5 9 8 6 ] 5 1 3 i=2: 1 2 [3 5 9 8 6 ] 4 0 0 i=3: 1 2 3 [5 9 8 6 ] 3 0 0 i=4: 1 2 3 5 [9 8 6 ] 2 1 3 i=5: 1 2 3 5 6 [8 9 ] 1 0 0 结果: 1 2 3 5 6 8 [9 ] 2.8 排序 2.8.2 选择排序 比较 逻辑交换 物理移动 次数 次数 次数 3)算法分析:第一趟排序时进行n-1次比较,第i趟排序时进行n-i次比较,总比较次数= ? 比较次数: n(n-1)/2 ? 移动次数:最坏情况下为3(n-1) ? 时间复杂度:T(n) = O(n2) ? 空间复杂度为:O(1) 交换记录用 ? 简单选择排序为不稳定排序 2.8 排序 2.8.2 选择排序 2. 堆排序 --在排序过程中将存放在向量中的数据看作是一棵完全二叉树,利用完全二叉树上下层结点之间的关系来完成排序。 1)堆的定义:设有序列{ k1,k2,…,kn },若满足: 则称该序列构成的完全二叉树是堆。 例:序列:{ 84 68 42 66 48 22 26 46 }构成的堆。 2.8.2 选择排序 2.8 排序 84 68 22 48 26 42 66 46 36 2)堆排序 ①
文档评论(0)