[其它]ch10 内部排序.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[其它]ch10 内部排序

第10章 内部排序 10.1 排序简介 10.2 插入排序 10.3 快速排序 10.4 选择排序 10.5 归并排序 10.6 基数排序 10.7 各种排序方法的比较 本章知识点和要求 各种排序方法的特点并能灵活应用(掌握) 各种方法的排序过程(掌握) 各种排序方法的时间复杂度分析(掌握) 10.1 排序简介 10.1 排序简介 关键字 是数据元素中的某个数据项。如果某个数据项可以唯一地确定一个数据元素,就将其称为主关键字;否则,称为次关键字。 排序 将数据元素的任意序列,重新调整为一个按关键字排列有序的序列. 如:有数据元素序列(r1,r2,r3,r4,r5,r6,r7)其对应关键字值为:(5, 4, 8, 6, 9, 1,21);按关键字非递减排列得新的数据元数排列(r6,r2,r1,r4,r3,r5,r7)的操作. 10.1 排序简介 一般情况下: 假设含n个记录的序列为{ R1, R2, …, Rn } 其相应的关键字序列为 { K1, K2, …,Kn } 这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系 Kp1≤Kp2≤…≤Kpn 按此固有关系将上式记录序列重新排列为 { Rp1, Rp2, …,Rpn }的操作称作排序。 排序的基本方法 内部排序主要有5种方法:插入、交换、选择、归并和基数。 一趟: 在排序过程中,基本动作执行一次。 排序算法的效率 评价排序算法的效率主要有两点: 一是在数据量规模一定的条件下,算法执行所消耗的平均时间,对于排序操作,时间主要消耗在关键字之间的比较和数据元素的移动上,因此我们可以认为高效率的排序算法应该是尽可能少的比较次数和尽可能少的数据元素移动次数; 二是执行算法所需要的辅助存储空间,辅助存储空间是指在数据量规模一定的条件下,除了存放待排序数据元素占用的存储空间之外,执行算法所需要的其他存储空间,理想的空间效率是算法执行期间所需要的辅助空间与待排序的数据量无关。 10. 2 插 入 排 序 插入排序的思路 不断地将待排序的数值插入到有序段(序列)中,使有序段(序列)逐渐扩大,直至所有数值都进入有序段中位置。 直接插入排序 折半插入排序 希尔排序 直接插入排序 首先将待排序记录序列中的第一个记录作为一个有序段; 将记录序列中的第二个记录插入到上述有序段中形成由两个记录组成的有序段; 再将记录序列中的第三个记录插入到这个有序段中,形成由三个记录组成的有序段; …依此类推,每一趟都是将一个记录插入到前面的有序段中,假设当前欲处理第i个记录,则应该将这个记录插入到由前i-1个记录组成的有序段中,从而形成一个由i个记录组成的按关键字值排列的有序序列,直到所有记录都插入到有序段中。 一共需要经过n-1趟就可以将初始序列的n个记录重新排列成按关键字值大小排列的有序序列。 折半插入排序 思想:用折半查找方法确定插入位置的排序叫~ 从上述过程可以看出:折半插入排序仅减少了关键字之间的比较次数,而记录的移动次数不变. 算法描述 作 业 1.习题册 第9章习题2,4(1)(2) 2.有一随机数{25,84,21,46,13,27,68,35,20,23,11,12}采用希尔排序方法对它们排序,写出每趟排序的过程。其中di =di-1/2, d0=7 2.在执行某种排序算法的过程中出现了排序的关键字朝着最终排序序列相反的方向移动,从而认为该排序算法是不稳定的,这种说法对吗?为什么? 2.答:这种说法不对。因为排序的不稳定性是指两个关键字值相同的元素的相对次序在排序前、后发生了变化,而题中叙述和排序中稳定性的定义无关,所以此说法不对。对4,3,2,1起泡排序就可否定本题结论。 4.试问:对于初始状态如下的各个序列(长度为n)进行直接插入排序时,至多需要进行多少次关键字间的比较(要求按照正序排序)? (1)关键字按照升序有序; (2)关键字按照逆序有序; (1)n-1;(2)(n+2)(n-1)/2; 10.3 交换排序 冒泡排序 排序过程 将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r[1].keyr[2].key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止——第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上 对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置 重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止 算法描述 快速排序 快速排序由霍尔(Hoare)提出,它是一种对冒泡排序的改进。由于其排序速度快,因此称快速排序(quick sort)

文档评论(0)

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

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

1亿VIP精品文档

相关文档