计算机数据结构第十章 排序要点.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 排序 正序与逆序 若有序表是按排序码升序排列的,则称为升序表或正序表,否则称为降序表或逆序表。不失普遍性,我们一般只讨论正序表。 常见排序的方法 10.2 插入排序 直接插入排序原理 直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看作由两部分组成:一个有序表和一个无序表。开始时有序表中只包含一个元素,无序表中包含有n-1个元素。排序过程中,每次从无序表中取出第一个元素,令其关键字依次与有序表元素的关键字进行比较,将其插入到有序表中的适当位置,使有序表的长度不断加长,完成排序过程。 直接插入排序过程示例 初始关键字序列 直接插入排序算法 数据结构定义 以顺序表作为存储结构的直接插入排序算法 直接插入排序算法时间复杂度 以顺序表作为存储结构的直接插入排序算法 时间复杂度:O(n2) 在最好情况下(正序),元素的移动次数为0,比较次数为n – 1; 在最坏情况下(逆序),元素的移动次数为(n+4)(n-1)/2,比较次数为 (n+2)(n-1)/2 空间复杂度:O(1) 只需要 1 个辅助单元 稳定的排序方法 适用情况 元素数目少,或者元素的初始序列基本有序 10.2.2. 其他插入排序 在寻找插入位置时采用二分查找,则称为折半插入排序,2-路插入排序在此基础上增加了辅助空间、减少了记录的移动。 10.2.3 希尔排序 希尔排序(Shell’s Sort)也称为缩小增量排序,其改进原理主要基于以下两点 元素基本有序时,直接插入排序的时间复杂度接近于O(n) 元素数目n较少时,直接插入排序的效率较高 10.2 希尔排序过程示例 初始关键字序列: 希尔排序算法 10.3 交换排序 10.3.1 起泡排序 起泡排序(Bubble Sorting)的基本思想是:将相邻位置的关键字进行比较,若为逆序则交换之。 第i趟排序过程为从L.r[1]至L.r[n-i+1]依次比较相邻两个记录的关键字,并在“逆序”时交换相邻记录,其结果是这n-i+1个记录中关键字最大的记录被交换到第n-i+1的位置上。 整个排序过程终止的条件是“在一趟排序过程中没有进行过交换记录的操作” 起泡排序过程示例 初始关键字序列: 起泡排序算法 以顺序表作为存储结构的起泡排序算法 起泡排序算法分析 以顺序表作为存储结构的起泡排序算法 时间复杂度:O(n2) 在最好情况下(正序),元素的交换次数为0,比较次数为n – 1; 在最坏情况下(逆序),元素的交换次数为n(n-1)/2,比较次数为 (n+2)(n-1)/2 空间复杂度:O(1) 只需要 1 个辅助单元进行交换 稳定的排序方法 适用情况 元素数目少,或者元素的初始序列基本有序 10.3.2. 快速排序 快速排序(Quick Sorting)是迄今为止所有内排序算法中速度最快的一种。 它的基本思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的关键字均小于或等于基准元素的关键字,右子序列的关键字则大于基准元素的关键字,然后分别对两个子序列继续进行排序,直至整个序列有序。 以顺序表作为存储结构的快速排序算法 时间复杂度:O(nlogn) 快速排序在最好情形下(左、右子区间的长度大致相等),则结点数n与二叉树深度h应满足log2nhlog2n+1,所以总的比较次数不会超过(n+1)log2n。因此,快速排序的最好时间复杂度应为O(nlog2n)。理论上已经证明,快速排序的平均时间复杂度也为O(nlog2n)。 在最坏情况下(逆序或正序),时间复杂度为 O(n2) 空间复杂度:O(logn) 在最坏情况下(逆序或正序),空间复杂度为O(n) 不稳定的排序方法 快速排序不适合对小规模的序列进行排序 10.3 快速排序方法的改进 三者取中的方法选取枢轴元素 划分的过程中进行“起泡”操作 快速排序算法被认为是内部排序方法中最好的一种 10.4 选择排序 10.4.1 简单选择排序 简单选择排序的基本思想是:第一趟在n个记录中选取最小记录作为有序序列的第一个记录,第二趟在n-1个记录中选取最小记录作为有序序列的第二个记录,第i趟在n-i+1个记录中选取最小的记录作为有序序列多中的第i个记录。 简单选择排序过程示例 初始关键字序列 简单选择排序算法 以顺序表作为存储结构的简单选择排序算法 简单选择排序算法分析 以顺序表作为存储结构的简单选择排序算法 时间复杂度:O(n2) 在n个关键字中选出最小者,需要n-1次比较,继续在剩余的n-1个元素中选出次小者需要n-2次比较,依此类推。 空间复杂度:O(1) 只需要 1 个辅助单元进行交换 不稳定的排序方法 适用情况 元素数目少的情况 无需完全排序的情

文档评论(0)

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

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

1亿VIP精品文档

相关文档