第二十讲选择排序和交换排序.pdf

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
孙猛 /teachers/sunm 2017年12月21 日 1 • 择排序 • 交换排序 2 • 基本思想: • 护最⼩的i 个录的已排序序列; • 每次从剩余未排序的录中取关最⼩的录,排 在已排序序列之后,作为序列的i +1 • 以排序序列开始; 每次从未排序录中排序最⼩的录, 与未排序段的⼀个录交换;直到所有录排好序。 • 直接择排序的⽐次数与⽂件初始状态⽆关。 • 循环序⽐,护已找到的最⼩录下标。循环束时 得到未排序段最⼩录的下标,交换扩展已排序序列。 • 未排序段剩下⼀个元时就不必再择。 • 直接择排序⽤序存储⽅式。 
 ≤ 已排序段中的最⼤元⼩于于所有未排序元 4 [ 13 ] 38 65 97 49 49 27 76 5 void selectSort(SortObject * pvector) { int i, j, k; RecordNode temp, *data = pvector-record; for( i = 0; i pvector-n-1; i++ ) { /* 做n-1次择排序 */ k = i; for (j = i+1; j pvector-n; j++) /* 在⽆序段找最⼩录*/ if (data[j].key data[k].key) k = j; if (k != i) { /* 时交换录 */ temp = data[i]; data[i] = data[k]; data[k] = temp; } } } 6 • 直接择排序的时复杂度: • 录动:最好时 0 ; 最坏时O (n); • ⽐:n (n-1)/2 (总是样); 2 • 总的时复杂度:O (n ); • 定性: 不定 • 其中的交换操作是导不定的根源。如果改为动前⾯未排序 元出位后存⼊, 可以把法改为定的。 2 • 直接择排序没有应性,对任何序列O (n ) 次⽐。 • 实明其平均排序效率低于直接插⼊排序法。

文档评论(0)

ld1556656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档