【精品数据结构】排序算法.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 10 章 排序算法 §10.1 概述 排序的主要目的是便于以后在已排序的集合中查找检索某一成员 若干概念 关键字 排序 排序的稳定性 内排序 外排序 多键排序 §10.1 概述 排序方法进行分类 插入排序 交换排序 选择排序 归并排序 分配排序 §10.1 概述 算法的时间复杂性 通常只考虑键值的比较次数和记录的移动次数 评价排序的另一个主要标准是执行算法所需的附加空间 §10.2 插入排序 插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。 §10.2.1 直接插入排序 初始键值序列 [46] 58 15 45 90 18 10 62 i=2 [46 58] 15 45 90 18 10 62 i=3 [15 46 58] 45 90 18 10 62 i=4 [15 45 46 58] 90 18 10 62 i=5 [15 45 46 58 90] 18 10 62 i=6 [15 18 45 46 58 90] 10 62 i=7 [10 15 18 45 46 58 90] 62 i=8 [10 15 18 45 46 58 62 90] ? 图 10?1直接插入排序过程示例 §10.2.1 直接插入排序 可以将插入排序粗略地描述为: ? SortInsertion(int a[], long n) { for (i=1; in; i++) 将a[i]插入到a[0]—a[i-1]中,并使其保持有序 } 插入排序的程序: int SortInsertion(int a[], long n) { int x, i,,j; ? for (i=1; in; i++) { x=a[i]; j=i-1; while (j=0 xa[j]) { a[j+1] = a[j]; j--; } a[j+1] = x; } //for return 0; } §10.2.2 其他插入排序算法 除了直接插入排序外,还有其他形式的插入排序,如折半插入排序、表插入排序和希尔排序等。 它们是对直接插入排序的改进。改进的关键点是,如何尽快地找到插入位置。 §10.3 交换排序 所谓交换,就是根据记录集中两个记录键值的比较结果来对换这两个记录在序列中的位置 交换排序的特点是:将键值较大的记录向记录集的一端移动,键值较小的记录向另一端移动。 §10.3.1 冒泡排序 设初始记录集为 20 30 10 45 33 22 55 50 则第一趟冒泡的过程为: 20 30 10 45 33 22 55 50 //20与30比较,未交换 20 10 30 45 33 22 55 50 //30与10比较,交换 20 10 30 45 33 22 55 50 //30与45比较,未交换 20 10 30 33 45 22 55 50 //45与33比较,交换 20 10 30 33 22 45 55 50 //45与22比较,交换 10 30 33 22 45 55 50 //45与55比较,未交换 20 10 30 33 22 45 50 55 //55与50比较,交换 §10.3.1 冒泡排序 每趟的结果 10 20 30 22 33 45 50 55 //第2趟 10 20 22 30 33 45 50 55 //第3趟 10 20 22 30 33 45 50 55 //第4趟 10 20 22 30 33 45 50 55 //第5趟 10 20 22 30 33 45 50 55 //第6趟 10 20 22 30 33 45 50 55 //第7趟 10 20 22 30 33 45 50 55 //第8趟 §10.3.3 快速排序 (一)基本思想 基本思想是:在待排序的n个记录中任取一个记录(例如就取第一个记录),以该记录的键值为标准,将所有记录分为两组(一般都是无序的),使得第一组中各记录的键值均小于或等于该键值,第二组中各记录的键值均大于该键值。然后把该记录就排在这两组的中间(这也是该记录最终的位置)。此称为一趟分割,对所分成的两组再分别重复上述方法,直到所有记录都排在适当

文档评论(0)

精品资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档