数据结构与算法设计(第二版)课件 第9章 排序.pptx

数据结构与算法设计(第二版)课件 第9章 排序.pptx

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

第九章排序;排序;9.1排序的基础知识;为了讨论方便,下面给出排序确切的定义。

假设含有n个记录的序列为

{r1,r2,…,rn}(9-1)

它们的关键字相应为{k1,k2,…,kn}。

对式(9-1)的记录序列进行排序就是要确定序号1,2,…,n的一种排列:

{p1,p2,…,pn}

使其相应的关键字满足如下的非递减(或非递增)的关系:

kp1≤kp2≤…≤kpn(9-2)

也就是使式(9-1)的记录序列重新排列成一个按关键字有序的序列:

{rp1≤rp2≤…≤rpn}(9-3);排序稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的。

排序不仅仅针对主关键字,也会对次关键字进行排序。

当待排序记录中的关键字ki(i?=?1,2,…,n)是主关键字,则任何一个记录的无序序列经排序后得到的结果是唯一的;

反之,若待排序的记录的关键字是次关键字,则排序所得到的记录序列的结果不唯一。

假设ki=kj?(1≤i≤n,1≤j≤n,i≠j),且在排序前的序列中ri领先于rj?(即ij)。若在排序后的序列中ri仍领先于rj,则称所用的排序方法是稳定的;反之,若使排序后的序列中rj领先于ri,则称所用的排序方法是不稳定的。;9.1.2排序的分类;按排序算法的时间复杂度来区分,则可分为三类:

简单的排序方法,其时间复杂度为O(n2);

先进的排序方法,其时间复杂度为O(nlbn);

基数排序,其时间复杂度为O(d×n)。

我们学习这些算法,并不是为了编程实现,而是通过学习来提高算法设计能力,以便能够灵活运用基本的算法去解决更复杂的问题。;对内部排序来说,排序算法的性能主要考虑以下三个方面:

(1)时间性能。

在排序过程中,一般进行两种基本操作:

①比较两个关键字的大小;

②将记录从一个位置移动到另一个位置。

其中操作①对于大多数排序方法来说是必要的,而操作②则可以通过采用适当的存储方式予以避免??

总之,高效率的内部排序算法应该是具有尽可能少的关键字比较次数和尽可能少的记录移动次数。;(2)辅助空间。

评价排序算法性能的另一个指标就是算法执行过程中需要的辅助存储空间。辅助存储空间是除了存放待排序序列所占存储空间之外,执行算法所需的额外空间。

(3)算法的复杂度。

这里是指算法本身的复杂度,而不是指算法的时间复杂度。;9.1.3存储结构

对于待排序的记录序列,有三种常见的存储表示方法:

(1)向量结构:将待排序的记录存放在一组地址连续的存储单元中。由于在这种存储方式中,记录之间的次序关系由其存储位置来决定,所以排序过程中一定要移动记录才行。

(2)链表结构:采用链表结构时,记录之间逻辑上的相邻性是靠指针来维持的,这样在排序时,就不用移动记录元素,而只需要修改指针。这种排序方式被称为链表排序。

(3)记录向量与地址向量结合:将待排序记录存放在一组地址连续的存储单元中,同时另设一个指示各个记录位置的地址向量。这样在排序过程中不移动记录本身,而修改地址向量中记录的“地址”,排序结束后,再按照地址向量中的值调整记录的存储位置。这种排序方式被称为地址排序。;本章讨论的排序算法大部分采用顺序存储。为了讨论方便,假设待排记录的关键字均为整数,均从数组中下标为1的位置开始存储,下标为0的位置存储监视哨,或空闲不用。

#defineMAXSIZE20/*一个用作示例的小顺序表的最大长度*/

typedefintKeyType;

typedefstruct

{

KeyTypekey;

OtherTypeotherdata;

}RecordType;

typedefstruct

{

RecordTyper[M

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档