网站大量收购独家精品文档,联系QQ:2885784924

零基础学数据结构 第12章 内排序.pptVIP

  1. 1、本文档共63页,可阅读全部内容。
  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文档。上传文档
查看更多
零基础学数据结构 第12章 内排序

第12章 排序 排序(sorting)是计算机程序设计的一个特别重要的技术,计算机的各个应用领域都有它的身影。如在处理学生考试成绩和元素的查找等都涉及到了对数据的排序。排列有序的折半查找要比顺序查找的效率要高许多。本章主要给大家介绍几种常用的排序技术:插入排序、选择排序、交换排序、归并排序和基数排序。 本章重点和难点: 1、希尔排序 2、快速排序 3、堆排序 4、归并排序 5、基数排序 12.1 基本概念 排序:把一个无序的元素序列按照元素的关键字递增或递减排列为有序的序列。 假设包含n个元素(记录)的序列 (E1,E2,…,En) 其对应的关键字为 (k1,k2,…,kn) 需确定1,2,…,n的一种排列p1,p2,…,pn,使关键字满足以下非递减(或非递增)关系: kp1≤kp2≤…≤kpn 从而使元素构成一个非递减(或非递增)的序列: (Ep1,Ep2,…,Epn) 这样的一种操作被称为排序。 12.1 基本概念 稳定排序和不稳定排序:在待排序的记录序列中,若存在两个或两个以上关键字想到呢个的记录。假设ki=kj(1≤i≤n,1≤j≤n,i≠j),且排序前的对应的记录Ei领先于Ej(即ij)。若在排序之后,如果元素Ei仍领先于Ej,则称这种排序采用的方法是稳定的。如果经过排序之后,元素Ej领先于Ei(即ij),则称这种排序方法是不稳定的。 一个排序算法的好坏可以主要通过时间复杂度、空间复杂度和稳定性来衡量。无论算法稳定还是不稳定的,都不会影响到排序的最终结果。 12.1 基本概念 内排序和外排序:由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两类:内部排序和外部排序。内部排序也称为内排序,指的是待排序记录存放在计算机随机存储器中进行的排序过程;外部排序也称为外排序,指的是待排序记录的数据流很大,以致内存一次不能容纳全部记录,在排序的过程中需要不断对外存进行访问的排序过程。 12.1 基本概念 内排序的方法有许多,按照排序过程中采用的策略将排序分为几个大类:插入排序、选择排序、交换排序和归并排序。 在排序过程中,需要以下两种基本操作: (1)比较两个元素相应关键字的大小; (2)将元素从一个位置移动到另一个位置。 其中,第(1)种操作对大多数排序方法来说都是必要的,第(2)种操作可通过改变记录的存储方式可以避免。 12.1 基本概念 待排序的记录序列可有下列3种存储方式: (1)顺序存储。待排序的元素存储在一组连续的存储单元中,这类似于线性表的顺序存储,在序列中相邻的两个记录Ei和Ej,它们的物理位置也相邻。在这种存储方式中,记录之间的次序关系由其存储位置决定,则实现排序必须要移动记录。 (2)链式存储。待排序元素存储在一组不连续的存储单元中,这类似于线性表的链式存储,序列中相邻的两个记录Ei和Ej,其物理位置不一定相邻。在这种存储方式中,记录之间的关系由附设的指针指示,在进行排序时,不需要移动元素,只需要修改指针即可。 (3)静态链表。带排序记录存放在静态链表中,记录之间的关系由被称为游标的指针指示,实现排序不需要移动元素,只需要修改游标即可。 12.2 插入排序 12.2.1 直接插入排序 直接插入排序(straight insertion sort)是一种最简单的插入排序算法。它的基本算法思想描述如下: 假设待排序元素有n个,初始时,已排序子集只有一个元素,即第1个元素。未排序子集是剩下的n-1个元素。例如,有4个待排序元素22、6、17和8,排序前的状态如图12.1所示。 12.2 插入排序 第1趟排序:将无序集中的第一个元素,也就是6与有序集中的元素22进行比较,因为226,所以需要先将22向后移动一个位置,然后将6插入到第一个位置,如图12.2所示。其中,阴影部分表示无序集,白色部分表示有序集。 第2趟排序:将无序集的元素17从右到左依次与有序集中的元素比较,即先与22比较,因为1722,所以先将22向后移动一个位置,然后比较17与第1个元素6的大小,因为176,所以将17放在第2个元素的位置,如图12.3所示。 12.2 插入排序 第3趟排序:将待排序集合中的元素8与已经有序的元素集合从右到左依次比较,先与22比较。因

文档评论(0)

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

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

1亿VIP精品文档

相关文档