- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章_排序祥解.ppt
第 8 章 内部排序 排序就是把一组记录(元素)按照某个域的值的递增或递减的次序重新排列的过程。 常用且效率较高的内排序算法有5类: 插入排序、选择排序、交换排序、归并排序和分配排序。 本章将详细介绍插入、选择、交换和归并排序这几种内排序算法的基本思想、排序过程及实现算法。 排序的基本概念 1.关键字(Key) 假设被排序的对象是由若干个记录组成的文件,而记录由若干个数据项组成,其中可用来惟一标识一个记录的数据项,称为关键字项,该数据项的值称为关键字(key)。 在文件中能够惟一区别一个记录的关键字称为主关键字;不同记录,其关键字值可能相同的关键字称为次关键字。关键字也称为关键码或排序码。 排序的基本概念 学生证号是学生记录主关键字,其他数据项则是次关键字。 (非)关键字可用来作为排序运算的依据。 排序的基本概念 2.排序的稳定性与不稳定性 若使用主关键字进行排序,则排序结果一定是相同的;若使用次关键字排序,则排序结果有可能不同。 假设n个待排序的序列中存在多个记录具有相同的次关键字值Ki(第i个记录的关键字),若Ki=Kj(i, j=1, 2, …, n?1, n,且j?i),且排序前记录Ri排在记录Rj之前。若采用的排序方法,使排序后的记录Ri仍然排在记录Rj的前面,则称此排序方法是稳定排序,反之称此排序方法是不稳定排序。 排序的基本概念 3.内部排序与外部排序 按照排序过程所涉及的存储设备不同,排序可分为两大类:内部排序和外部排序。 内排序:在整个排序过程中,数据全部存放在计算机的内存储器中,并且在内存中调整记录间的相对位置。 外排序是指在排序过程中,大部分数据存放在外存储器中,借助内存逐步调整记录之间的相对位置。 排序的基本概念 3.内部排序与外部排序 内排序速度比外排序要快得多。内排序适用于记录个数不多的小文件,外排序则适用于不能一次将全部记录装入内存的大文件。 内排序方法按所用的策略不同,可以分为5类:插入排序、选择排序、交换排序、归并排序和分配排序(基数排序)。 排序的基本概念 4.排序方法的评价标准 评价标准:排序算法的时间复杂度和空间复杂度。 时间复杂度:执行排序算法所耗费的时间。排序的时间主要耗费在数据比较与数据移动上,因此,排序算法的时间复杂度可用排序过程中数据的比较次数和数据的移动次数来衡量。如果关键字是字符串,数据的比较次数就是影响执行时间的主要因素。当记录个数很多时,数据的交换次数则是影响执行时间的另一个主要因素。 一般情况下,排序算法的时间复杂度是按平均情况进行估计的,但有时也按最好的情况和最坏的情况进行估算。 排序的基本概念 4.排序方法的评价标准 空间复杂度:执行排序算法所需的附加存储空间。 当算法中使用的辅助存储单元与排序对象的个数无关时,其空间复杂度为O(1)。这样的排序算法亦称为原地排序算法,就是利用原来存放记录的数组空间来重新按关键字大小存储记录的。 此外,排序算法的稳定性和简单性也是衡量一个排序算法好与坏的重要指标。 排序的基本概念 5.排序算法的存储实现 ① 顺序表作为存储结构:排序过程就是对记录本身进行物理重排的过程,即通过记录关键字的比较和移动,将记录移动到合适的位置上。 ② 链表作为存储结构:排序过程中不需要移动记录,仅修改指针。 ③ 辅助表作为存储结构:有些排序方法难以在链表上实现,为了避免在排序过程中移动记录,可以为文件另外建立一个辅助表。例如,建立一个由记录关键字和指向记录的指针组成的索引表。这样,在排序过程中只需对这个辅助表的表目进行物理重排,不移动记录本身。 排序的基本概念 采用顺序表作为文件的存储结构: #define MAX 400 /* MAX为记录数组最大数*/ typedef int datatype; /* 定义关键字类型*/ typedef struct record /* 定义记录为结构类型*/ { KeyType key; /* 记录的关键字域*/ ElemType other; /* 记录的其它域*/ }rectype *s1, r [MAX]; 数组R中第0个记录可用做监视哨,或用来暂存某个记录。 插入排序 插入排序的基本方法:每次将一个待排序的记录按其关键字大小,插到前面已排好的序列中的适当位置,直到全部记录插入为止。 常用的插入排序方法有: 直接插入排序;折半插入排序; 表插入排序;希尔排序 直接插入排序(Straight Insertion Sorting) 直接插入排序是一种最简单的排序方法。 基本思想:把数组R[n]中待排序的n个元素看成为一个有序表
您可能关注的文档
最近下载
- 统编版道德与法治三年级上册第8课《同学相伴》教学设计.docx VIP
- Unit 2 Family ties 知识清单(六大知识题型)总梳理(解析版).docx VIP
- 2025年浙商银行校园招聘笔试参考题库附答案解析.docx VIP
- 2025-2026学年浙美版(2024)小学美术三年级上册(全册)教学设计(附目录P202) .pdf
- 金属→配体的π配键.PPT VIP
- PSM70电力安全防误管理系统-用户手册.pdf VIP
- ERP系统运行使用管理制度.docx VIP
- 人教版二年级上学期语文期中试卷.doc VIP
- ERP系统PM模块运行管理制度.pdf VIP
- 急性肾损伤的护理要点.pptx VIP
原创力文档


文档评论(0)