第9章排序学案.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 排序 9.1 排序的基本概念 9.2 插入排序 9.3 选择排序 9.4 交换排序 9.5 归并排序 9.6 基数排序 9.7 内排序方法比较 9.8 外排序 9.1 排序的基本概念 1. 排序的定义 2. 排序的分类 3. 排序的稳定性 4. 排序算法评价 5. 排序算法约定 1. 排序的定义 排序就是把一组数据元素(记录)按其关键字的某种次序排列起来,使其具有一定顺序,便于进行查找。 假设待排序的n个数据元素的集合为{A0,A1,…,An-1},其相应的关键字为{K0,K1,…,Kn-1},则排序是确定一个排列K’0,K’1,…,K’n-1,使得相应的关键字满足K’0≤K’1≤…≤K’n-1(或K’0≥K’1≥…≥K’n-1),而得到n个数据元素的一个按关键字非递减(或非递增)的有序序列(A’0,A’1,…,A’n-1)。 上述排序定义中的关键字Ki是待排序的数据元素集合中的一个域,排序是以关键字为基准进行的。若是Ki主关键字,则任何一个数据元素的无序序列经排序后得到的结果是唯一的;若是Ki次关键字,则排序的结果不唯一,因为待排序的元素序列中可能存在两个或两个以上关键字相等的元素。 2. 排序的分类 数据元素数量较少 内部排序 存储位置在内存 排序 数据元素数量较大 外部排序 存储位置在外存 3. 排序的稳定性 假设在待排序的数据元素集合中,存在两个或两个以上的元素具有相同的关键字,在用某种排序方法排序后,若这些相同关键字的元素的相对次序仍然保持不变,即在排序前的序列中,Ki=Kj(0≤i≤n-1, 0≤j≤n-1,i≠j),且Ai领先于Aj(即ij),而在排序后的序列中,Ai仍领先于Aj,则称这种排序算法是稳定的;若经过排序,这些元素的相对次序发生了变化,则称这种排序算法是不稳定的。 4. 排序算法评价 ⑴时间性能 排序是数据处理中经常执行的一种操作,往往属于系统的核心部分,因此排序算法的时间开销是衡量其好坏的重要标志。通常,在排序过程中需要进行下列两种操作:其一是比较两个关键字的大小;其二是将元素从一个位置移动至另一个位置。可见,在待排序的数据元素个数(即问题规模)一定的条件下,算法的执行时间主要消耗在关键字之间的比较和元素的移动上。因而,高效率的排序算法应该具有尽可能少的关键字比较次数和尽可能少的元素的移动次数。 ⑵空间性能 空间性能是指排序过程中所需要的辅助存储空间的大小。辅助存储空间是除了存放待排序的数据元素所占用的存储空间之外,执行算法所需要的其他存储空间。 ⑶稳定性 稳定的排序算法通常是应用问题所希望的,因此,排序算法的稳定性衡量排序算法好坏的一个重要标准。 5. 排序算法约定 ⑴待排序的数据元素类型 typedef int KeyType; typedef struct { KeyType key; ┆ }ElemType; ⑵待排序的数据元素序列 ElemType A[MaxSize ]; ⑶排序有非递减有序排序和非递增有序排序两种,一般称非递减次序为升序或正序,称非递增次序为降序、逆序或反序。不失一般性,本章所有排序算法均是按关键字非递减有序设计的。 9.2 插入排序 9.2.1 插入排序的基本思想 9.2.2 直接插入排序 9.2.3 希尔排序 9.2.1 插入排序的基本思想 插入排序的基本思想是:从初始有序的子集合开始,不断地把新的数据元素插入到有序子集合中的合适位置,使有序子集合中数据元素的个数不断增加,直到有序子集合的大小等于待排序的数据元素集合的大小为止。常用的插入排序法有直接插入排序和希尔排序。希尔排序并不是直接意义的插入排序,而是希尔排序的分组概念上的插入排序,即在不断缩小组的个数时,把原各组的记录插入到新组的合适位置中。 9.2.2 直接插入排序 1. 算法思想 2. 操作示例 3. 算法描述 4. 算法分析 5. 二分插入排序 1. 算法思想 直接插入排序的基本思想是:顺序地把待排序的数据元素按其关键字值的大小插入到已排列有序的子集合的适当位置,子集合的数据元素的个数逐渐增加,直至有序子集合的大小等于待排序数据元素集合的大小为止。 假设待排序的n个数据元素存放在数组A中,则直接插入排序描述为: ①把A[0]看成是一个元素的有序子集合,然后把A[1]插入到有序子集合A[0]中去,使其成为含有2个元

文档评论(0)

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

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

1亿VIP精品文档

相关文档