二级VB公共基础排序.ppt

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

排序的基本概念 假设条件: 假定排序的对象是由一组记录组成的文件,记录由若干字段组成,以排序码为依据排序 排序码-记录中的一个(或多个)字段 关键码-此时按关键码排序、排序的结果唯一 不是关键码-则可能有多个记录具有相同的排序码,排序的结果不唯一 排序:设{R0,R1,…,Rn-1}是由n个记录组成的文件,{K0,K1,…,Kn-1}是排序码集合,排序是将记录按排序码不增(或不减)的次序排列 排序的稳定与不稳定 按排序方法: 插入排序 选择排序 交换排序 分配排序 归并排序 按排序中涉及的存储器不同: 内排序:待排序的记录在排序过程中全部存放在内存的 外排序:如果排序过程中需要使用外存的 排序的基本操作 比较 比较两个关键字的大小 必须操作 移动 将一个记录从一个位置移动到另一个位置 非必须操作,可通过存储方式来避免(如静态链表) 评价排序算法好坏的标准 执行算法所需的时间 执行算法所需要的附加空间 算法本身的复杂程度也是考虑的一个因素 排序的时间开销是算法好坏的最重要的标志 排序的时间开销衡量标准: 算法执行中的比较次数 算法执行中的移动次数 插入排序 基本方法∶ 每步将一个待排序的记录,按其排序码大小插到前面已经排序的文件中的适当位置,直到全部插入完为止。 种类: 直接插入排序 二分法插入排序 表插入排序 shell排序 直接插入排序 方法: 假设待排序的n个记录{R0,R1,…,Rn-1}存放在数组中,插入记录Ri时,记录集合被划分为两个区间[R0,Ri-1 ]和[Ri,Rn-1 ] [R0,Ri-1 ]已经排好序 [Ri,Rn-1 ]是当前未排序的部分 将排序码Ki与Ki-1,Ki-2,…,K0依次比较,找出应该插入的位置,将记录Ri插入,原位置的记录向后顺移 直接插入排序采用顺序存储结构 直接插入排序的算法 二分法插入排序 直接插入排序的算法简洁,容易实现,n 较小时是一种很好的排序方法 通常文件中记录的数量都很大,则此时直接插入排序方法不适用 在直接插入排序的基础上减少比较的次数,即在插入Ri时改用二分法比较找插入位置,便得到二分法插入排序 二分法插入排序的算法 二分法插入排序必须采用顺序存储方式 二分法插入排序的算法(续) 选择排序 基本方法是 每步从待排序记录中选出排序码最小的记录,顺序放在已排序的记录序列的后面,直到全部排完。 直接选择排序 堆排序 直接选择排序 方法是 首先在所有记录中选出排序码最小的记录,与第一个记录交换 然后在其余的记录中再选出排序码最小的记录与第二个记录交换 以此类推,直到所有记录排好序 举 例 初始序列为 49,38,65,97,49’,13,27,76 (1)49 38 65 97 49’ 13 27 76 └────────┘ (2)[13]38 65 97 49’ 49 27 76 └────────┘ (3)[13 27]65 97 49’ 49 38 76 └──────┘ (4)[13 27 38]97 49’ 49 65 76 └─┘ (5) …… 交换排序 基本方法: 两两比较待排序记录的排序码,交换不满足顺序要求的偶对,直到全部满足为止 种类: 起泡排序方法 快速排序方法 起泡排序方法 通过相邻记录之间的比较与交换,使值较小(大)的记录逐步从后向前移,就像水底的气泡一样向上冒,故称为起泡排序 基本思想 Ri与Ri+1比较,若前者大于后者,则两个记录交换位置,否则不交换 从(R0,R1)到(Rn-2,Rn-1)的n-1次比较和交换过程称为一次起泡。经过这次起泡,n个记录中最大者被安置在第n个位置上 再对前n-1个记录进行同样处理 ……,这样最多做n-1次起泡就能完成排序。 起泡排序方法 改进: 可以设置一个标志noswap表示本次起泡是否有记录交换,如果没有交换则表示整个排序过程完成 例 题 初始序列: 49 38 65 97 76 13 27 49’ 第一趟起泡∶ 38 49 65 76 13 27 49’ [97] 第二趟起泡∶ 38 49 65 13 27 49’ [76 97] 第三趟起泡∶ 38 49 13 27 49’ [65 76 97] ………… 快速排序方法 快速排序是对起泡排序的改进 起泡排序在相邻两个记录间比较和交换,每次交换只能上移或下移一个位置,导致总的比较与移动次数增多 快速排序又称分区交换排序,是由C.A.R Hoar提出的 快速排序方法记录间比较次数较少,因而速度较快,被认为是较好的排序方法 快速排序基本思想 设待排序的n个记录{R0, R1,…, Rn-1}存放在数组R中,选取第一个记录R0为标准 一趟快速排序快速

文档评论(0)

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

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

1亿VIP精品文档

相关文档