数据结构C语言描述第9章.pdf

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

第9章 内部排序 第9章内部排序 9.1 排序的基本概念  9.2 插入类排序 9.3 交换类排序法 9.4 选择类排序法 9.5 归并排序  9.6 分配类排序 9.7 各种排序方法的综合比较 第9章 内部排序 9.1 排序的基本概念 1. 排序 有n个记录的序列{R ,R ,… ,R },其相应关键字的序列 1 2 n 是{K ,K ,… ,K },相应的下标序列为1,2 ,… ,n 。通过排 1 2 n 序,要求找出当前下标序列 1 ,2 ,… , n 的一种排列p1 , p2 , …,pn ,使得相应关键字满足如下的非递减(或非递增)关 系,即:Kp1 ≤Kp2 ≤…≤Kpn ,这样就得到一个按关键字有序的 记录序列{Rp1,Rp2 ,…,Rpn} 。 第9章 内部排序 2. 内部排序与外部排序; 根据排序时数据所占用存储器的不同,可将排序分为两 类: 一类是整个排序过程完全在内存中进行,称为内部排序; 另一类是由于待排序记录数据量太大,内存无法容纳全部数 据,排序需要借助外部存储设备才能完成,称为外部排序。 第9章 内部排序 假设Ki=Kj(1 ≤i≤n ,1≤j ≤n ,i≠j) , 若在排序前的序列 中Ri领先于Rj( 即ij) ,经过排序后得到的序列中Ri 仍领先于 Rj , 则称所用的排序方法是稳定的;反之,当相同关键字的 领先关系在排序过程中发生变化,则称所用的排序方法是不稳 定的。 无论是稳定的还是不稳定的排序方法,均能排好序。在应 用排序的某些场合,如选举和比赛等,对排序的稳定性是有特 殊要求的。  证明一种排序方法是稳定的,要从算法本身的步骤中加以 证明。证明排序方法是不稳定的,只需给出一个反例说明。 第9章 内部排序 在排序过程中,一般进行两种基本操作:   (1)比较两个关键字的大小;  (2 )将记录从一个位置移动到另一个位置。  其中操作(1)对于大多数排序方法来说是必要的,而操作 (2 )则可以通过采用适当的存储方式予以避免。对于待排序的 记录序列,有三种常见的存储表示方法:  · 向量结构:将待排序的记录存放在一组地址连续的存储单 元中。 由于在这种存储方式中,记录之间的次序关系由其存储 位置来决定,所以排序过程中一定要移动记录才行。  第9章 内部排序 ·链表结构:采用链表结构时,记录之间逻辑上的相邻性 是靠指针来维持的,这样在排序时,就不用移动记录元素, 而只需要修改指针。这种排序方式被称为链表排序。  ·记录向量与地址向量结合:将待排序记录存放在一组地 址连续的存储单元中,同时另设一个指示各个记录位置的地 址向量。这样在排序过程中不移动记录本身,而修改地址向 量中记录的“地址”,排序结束后,再按照地址向量中的值调 整记录的存储位置。这种排序方式被称为地址排序。 第9章 内部排序 为了讨论方便,假设待排记录的关键字均为整数,均从 数组中下标为1的位置开始存储,下标为0 的位置存储监视 哨,或空闲不用。  typedef int KeyType;  typedef struct {  KeyType key; OtherType other-data; } RecordType; 第9章 内部排序 9.2 插 入 类 排 序 插入排序的基本思想是:在一个已排好序的记录子集的 基础上,每一步将下一个待排序的记录有序地插入到已排好 序的记录子集中,直到将所有待排记录全部插入为止。 

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档