6 内部排序.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6 内部排序

第6讲 内部排序 本章主要考核内容如下: 排序的基本概念,直接插入排序,折半插入排序,起泡排序,简单选择排序,希尔排序,快速排序,堆排序,二路归并排序,基数排序,各种内部排序算法的比较,内部排序算法的应用等。 知识点分析 (一) 排序的基本概念 1.排序的定义 1)排序:把一组无序地数据元素按照关键字值递增(或递减)地重新排列。如果排序依据的是主关键字,排序的结果将是唯一的;如果排序依据是次关键字,则排序的结构可能不唯一。 2)稳定排序和不稳定排序:如果在待排序的记录序列中有多个数据元素的关键字值相同,经过排序后,这些数据元素的相对次序保持不变,则称这种排序算法是稳定的,否则称之为不稳定的。这往往发生在利用次关键字排序的时候。如果按照次关键字排序,由于排序方法的不同,可能出现“对次关键字相同的两个元素,原来排在前面的元素,排序后排在了后面”。即原来顺序是“49,49”排序后变为“49,49”,这种排序方法称为“不稳定排序”,否则称为“稳定排序”。 3)内部排序和外部排序:根据在排序过程中待排序的所有数据元素是否全部被放置在内存中,可将排序方法分为内部排序和外部排序两大类。内部排序是指在排序的整个过程中,待排序的所有数据元素全部被放置在内存中;外部排序是指由于待排序的数据元素个数太多,不能同时放置在内存,而需要将一部分数据元素放置在内存,另一部分数据元素放置在外存中,整个排序过程需要在内外存之间多次交换数据才能得到排序的结果。 4)排序过程的两项基本工作 ① 比较两个关键字的大小; ② 将记录从一个存储位置移动到另一个存储位置。(有时可以用某种方法避免该步骤) 说明: 1 任何排序方法都需要以上过程; 2 记录移动位置时,移动到的位置可能是最终位置,也可能不是,视不同的方法而定。 2.排序的分类 根据排序原则可将排序方法分为以下几类: ① 插入排序:将一个记录插入到一个已经排好序的有序表中,使得新表仍然有序。 ② 交换排序:比较两个元素,如果不有序,则交换位置,每趟比较都会有某个记录存放在恰当位置。 ③ 选择排序:每一次从剩余元素中选择出一个最小(或最大)的,放在确定的位置。 ④ 归并排序:将两个或多个有序表组合成一个新的有序表。 ⑤ 基数排序:是一种多关键字排序。 3.排序算法的效率 评价排序算法的效率主要有两点:一是在数据量规模一定的条件下,算法执行所消耗的平均时间,对于排序操作,时间主要消耗在关键字之间的比较和数据元素的移动上,因此我们认为,高效率的排序算法应该是尽可能少的比较次数和尽可能少的数据元素移动次数;二是执行算法所需要的辅助存储空间,辅助存储空间是指在数据量规模一定的条件下,除了存放待排序数据元素占用的存储空间之外,执行算法所需要的其他存储空间,理想的空间效率是算法执行期间所需要的辅助空间与待排序的数据量无关。 4.待排序序列的参考存储结构 待排序记录序列可以用顺序存储结构和链式存储结构表示。我们将待排序的记录序列用顺序存储结构表示,即用一维数组实现。大部分算法,都可按照以下定义的数据类型设定。 #define MAXSIZE 20 typedef int KeyType ; //定义关键字类型为整数类型(也可以为其它类型) typedef struct { KeyType key ; //关键字项 InfoType otherinfo ; //其它数据项 } RecordType ; typedef struct { RecordType r[MAXSIZE +1] ; //r[0]闲置或者作为哨兵单元 int length ; //顺序表长度 } SqList ; //顺序表类型 『真题解析』 1.某内排序方法的稳定性是指( )。 A.该排序算法不允许有相同的关键字记录 B.该排序算法允许有相同的关键字记录 C.平均时间为0(n log n)的排序方法 D.以上都不对 【答案】D。 【解析】待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档