网站大量收购独家精品文档,联系QQ:2885784924

《算法与数据结构》教学课件-第8章 排序--C语言描述(第2版)张乃孝编著.ppt

《算法与数据结构》教学课件-第8章 排序--C语言描述(第2版)张乃孝编著.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
张乃孝 算法与数据结构——C语言描述 typedef int KeyType; typedef int DataType; typedef atruct{ KeyType key; DataType info; }RecordNode; typedef struct{ int n; RecordNode *record; }SortObject; 基数排序算法中,时间耗费主要在修改指针上。一趟排序的时间为O(r+n)。总共要进行d趟排序,基数排序的时间复杂度是T(n)=O(d*(r+n))。当n较大、d较小,特别是记录的信息量较大时,基数排序非常有效。 基数排序中,每个记录中增加了一个next字段,还增加了一个queue数组,故辅助空间为S(n)=O(n+r)。 基数排序是稳定的。 作业: P278 复习题 1,2,3 算法题2,3,4 26 61 77 48 19 11 59 15 01 05 (5)调整序号为1的结点 77 61 59 48 19 11 26 15 01 05 (6)调整序号为0的结点 05 61 59 48 19 11 26 15 01 77 (7)结点77与结点5互换 61 59 15 19 11 26 05 01 77 (8)重建堆 48 (9)结点61与结点1互换 59 26 15 19 11 01 05 61 77 (10)重建堆 48 01 59 15 19 11 26 05 61 77 48 (11)结点59与结点05互换 05 26 15 19 11 01 59 61 77 (12)重建堆 48 48 26 15 05 11 01 59 61 77 19 (12)结点48与结点1互换 (13)重建堆 01 26 15 05 11 48 59 61 77 19 26 11 15 05 01 48 59 61 77 19 (15)结点26与结点1互换 (16)重建堆 01 11 15 05 26 48 59 61 77 19 19 11 01 05 26 48 59 61 77 15 (17)结点19与结点5互换 (18)重建堆 05 11 01 19 26 48 59 61 77 15 15 11 01 19 26 48 59 61 77 05 (19)结点15与结点1互换 (20)重建堆 01 11 15 19 26 48 59 61 77 05 11 01 15 19 26 48 59 61 77 05 堆排序适用于n值较大的情况。其比较次数为: 2n(?log2n?)。在最坏的情况下,时间复杂度也是O(nlogn)。且仅需一个记录大小的辅助空间。 8.4 交换排序 两两比较待排序记录的排序码,交换不满足顺序要求的偶对,直到全部为止。 8.4.1 起泡排序 8.4.2 快速排序 设待排序记录顺序存放在R0,R1,R2,…,Rn-1中,依次比较(R0,R1),( R1,R2),…, (Rn-2,Rn-1),不满足顺序则交换,结果,最大者在Rn-1中。这叫一次起泡。此后,再对存放在R0,R1,R2,…,Rn-2中n-1个记录作同样处理,结果,最大者在Rn-2中。… 。 n-1次起泡能完成排序。设置标志noswap表示本次起泡是否有交换,若无交换,表示排序完成。 8.4.1 起泡排序 38 49 65 76 13 27 49 97 49 38 65 97 76 13 27 49 38 49 65 13 27 49 76 97 38 49 13 27 49 65 76 97 38 13 27 49 49 65 76 97 13 27 38 49 49 65 76 97 13 27 38 49 49 65 76 97 初始 1 2 3 4 5 6 算法8.7 起泡排序算法 void bubbleSort(SortObject * pvector) { int i, j, noswap; RecordNode temp; for(i=0; ipvector-n-1; i++) /* 做n-1次起泡 */ { noswap=TRUE; for(j=0; jpvector-n-i-1; j++) /* 置交换

文档评论(0)

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

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

1亿VIP精品文档

相关文档