- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构Data Structures张 凯计算机学院 软件工程系2011年3月12日第10章 内部排序概述插入排序 (直接排序、折半排序、希尔排序)交换排序 (冒泡排序、快速排序)选择排序 (直接排序、堆排序)归并排序基数排序§10.4 选择排序选择排序基本思想: 第i趟在n-i+1(i=1,2,…,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。1.简单选择排序2.树形选择排序3.堆排序§10.4 选择排序简单选择排序 排序过程: 首先通过 n –1 次关键字比较,从 n 个记录中找出关键字最小的记录,将它与第一个记录交换。 再通过 n –2 次比较,从剩余的 n –1 个记录中找出关键字次小的记录,将它与第二个记录交换。 重复上述操作,共进行 n –1 趟排序后,排序结束。 kkkjjjjjj§10.4 选择排序简单选择排序 例: 比较次数 n - 1 i =1 初始:[ 49 38 65 97 76 13 27 ] 13 49 n - 2 i =2 一趟:13 [38 65 97 76 49 27 ] i =3 二趟:13 27[65 97 76 49 38 ] i =4 三趟:13 27 38[97 76 49 65 ] i =5 四趟:13 27 38 49[76 97 65 ] n - 6 i =6 五趟:13 27 38 49 65[97 76 ] 排序结束:六趟:13 27 38 49 65 76 97六趟:13 27 38 49 65 76[97 ] §10.4 选择排序简单选择排序算法描述void SelectSort (SqList L) { // 对顺序表 L 作简单选择排序 for (i = 1; i L.length; ++ i) { k = i; for ( j = i+1; j = n; j++) if (L.r[j].key L.r[k].key) k = j; if (i != k) L.r[i]←→L.r[k];// 与第 i 个记录交换 } } // SelectSort §10.4 选择排序简单选择排序算法分析 由于存在着不相邻元素之间的互换,因此,简单选择排序是“不稳定的” 。 算法实现共需要进行n-1 次选择,每次选择需要进行n-i次比较(1≤i≤n-1),而每次交换最多需3次移动,因此,总的比较次数 C = n(n-1)/2,总的移动次数 M = 3(n-1)。故其时间复杂度为O(n2)。 空间效率:O(1)——交换时用到一个暂存单元§10.4 选择排序树形选择排序 (又称锦标赛排序 )基本思想:与体育比赛时的淘汰赛类似。 首先对 n 个记录的关键字进行两两比较,得到 ?n/2? 个优胜者(关键字小者),作为第一步比较的结果保留下来。然后在这 ?n/2? 个较小者之间再进行两两比较,…,如此重复,直到选出最小关键字的记录为止。例:关键字序列T= (21,25,49,25*,16,08,63),请给出锦标赛排序的具体实现过程。0821082125*086321254925*160863注:为便于自动处理,建议每个记录多开两个特殊分量:keyotherinfoIndex(结点位置编号)Tag(是否参加比较)第一趟:Winner (胜者)r[1]胜者树Tree[8]Tree[9]Tree[10]Tree[11]Tree[12]Tree[13]Tree[14]Tree[15]初态补足2k( k=?log2n? )个叶子结点0821082125*086321254925*160863Winner (胜者)第二趟:r[2]161616求次小值16时,只需比较2次,即只比较?log2n? -1次。令其Tag=0,不参与比较1621162125*166321254925*160863Winner (胜者)第三趟:r[3]2163令其Tag=0,不参与比较21086321082125*086321254925*160863Winner (胜者)第四趟:r[4]2525252125160825631621082125*0863251621254925*160863Winner (胜者)第五趟:r[5]25*25*252525631621082125*086325162125
原创力文档


文档评论(0)