第6讲 排序.pptVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6讲 排序

第六讲 排序 直接插入排序 排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序。 这种算法主要时间花在什么上? 算法时间复杂度是多少? O(n2) 算法空间复杂度是多少? 一个数组 折半插入排序 直接插入算法简单,但数据量大时比较次数增加 可利用有序区“有序”的特点,使用折半查找法寻找插入位置 希尔排序(缩小增量排序) 直接插入排序当序列基本有序时效率较高 希尔排序是将待排序序列划分成若干组 在每个组内进行排序 经过多次分组排序后,序列基本有序 将序列进行一次直接插入排序 见课本p198例题 冒泡排序 从后向前依次比较相邻两元素,若a[i+1]<a[i]则交换,使值较小的元素从下面一直往上“冒”。每一次排序都把最小的元素“冒”在最上面。 17 3 3 3 17 14 25 14 17 14 25 20 20 20 25 什么情况下算法结束? 不再交换时 这种算法主要时间花在什么上? 算法时间复杂度是多少? O(n2) 算法空间复杂度是多少? 一个数组 快速排序 取待排序列中的第一个元素做基准,通过一趟排序,将待排序记录分割成独立的两部分,左边部分均<=基准,右边部分均>基准。然后分别对这两部分继续进行排序,以达到整个序列有序 排序过程:对r[s..t]中记录进行一趟快速排序,附设两个指针i和j 初始时令i=s,j=t 首先从j所指位置向前搜索第一个关键字小于x的记录,并和r[i]交换 再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和r[j]交换 重复上述两步,直至i==j为止 再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止 有什么地方可以改进的吗? 初始: 17 3 25 14 20 第一次:17 3 25 14 20 第二次:14 3 25 20 第三次:14 3 25 20 第四次:14 3 25 20 第五次(14 3) 17 (25 20) 对左序列和右序列继续递归排序,直到每个序列只剩下一个元素为止。 算法时间复杂度:nlog2n 算法空间复杂度:一个数组 当序列杂乱无章时,快速排序是目前为止最快的排序算法 简单选择排序 思想:首先从1~n个元素中选出关键字最小的记录交换到第一个位置上。然后再从第2 个到第n个元素中选出次小的记录交换到第二个位置上,依次类推。 时间复杂度为O(n2), 适用于待排序元素较少的情况。 二路归并排序 将两个或两个以上的有序表组成一个新的有序表。 把具有n个记录的表看成是n个有序的子表,每个子表的长度为1,然后两两归并,得到[n/2]个长度为2或为1的有序子表;再两两归并,如此重复,直到得到一个长度为n的有序表为止。 归并过程是二叉树从叶到根的过程,所以归并的次数就是二叉树的高度。 每趟归并后需要复制记录次数为n次 算法时间复杂度:nlog2n 算法空间复杂度:二个数组 * * 例 49 38 65 97 76 13 27 i=2 (38 49) 65 97 76 13 27 i=3 (38 49 65) 97 76 13 27 i=4 (38 49 65 97) 76 13 27 i=5 (38 49 65 76 97) 13 27 i=6 (13 38 49 65 76 97) 27 i=1 ( ) (13 27 38 49 65 76 97) 排序结果: i=7 (13 27 38 49 65 76 97) 初始 第一次 第二次 i j i j i j i j i j 下图是对下列序列实现二路归并的过程实例。 ??42 20 17 13 28 14 23 15 50 3

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档