- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch4_2排序 《软件技术基础》 教学课件
4.2 排序 4.2.1 排序的基本概念 4.2.2 插入排序 4.2.3 交换排序 4.2.4 选择排序 4.2.5 归并排序 4.2.6 内部排序方法的比较和选择 4.2.7 小结 4.2.1 排序的一般概念 排序定义——将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列叫~ 排序分类 按待排序记录所在位置 内部排序:待排序记录存放在内存 外部排序:排序过程中需对外存进行访问 按排序依据原则 插入排序:直接插入排序、折半插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、树形选择排序、堆排序 归并排序:2-路归并排序 排序分类 按排序的稳定性 稳定的算法:相同关键字元素间的位置关系排序前与排序后一致 不稳定的算法:相同关键字元素间的位置关系排序前与排序后不一致 按排序所需工作量 简单的排序方法:T(n)=O(n2) 先进的排序方法:T(n)=O(logn) 4.2.2 插入排序 1. 直接插入排序 2. 折半插入排序 3. 表插入排序 4. 希尔排序 直接插入排序 排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序 算法描述 3. 表插入排序 定义:对于线性链表的排序,不需要移动记录,只需修改链接指针,将记录按关键字建为一个有序链表 链表的定义 3. 表插入排序 算法思想: 假设数据元素已存在链表中,且0号单元作为头节点。 首先设置空的循环链表,即头节点指针域置0 在头节点数据域中存放比所有记录关键字都大的整数。 将链表中数组下标为1的节点和表头节点构成一个循环链表 然后对数组下标为2至n的节点不移动记录而是修改指针,将记录按关键字递增建为一个有序表。 希尔排序(缩小增量法) 直接插入排序算法简单,在n值很小时,效率比较高;在n值很大时,若序列按关键字基本有序,效率依然很高,可以达到O(n)。 希尔排序法就是从这两点出发,给出插入排序的改进方法。 排序过程: 首先选定两个记录间的距离d1,在整个待排序记录序列中将所有间隔为d1的记录分成一组,进行组内直接插入排序 然后再取两个记录间的距离d2d1,在整个待排序记录序列中,将所有间隔为d2的记录分成一组,进行组内直接插入排序 直至选定两个记录间的距离dt=1为止,此时只有一个子序列,即整个待排序记录序列,此时已基本有序,对其进行直接插入排序。 希尔排序 算法描述 4.2.3 交换排序 1. 冒泡排序 2. 快速排序 1. 冒泡排序 思想:小的浮起,大的沉底。从左端开始比较。 排序过程 将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r[1].keyr[2].key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止——第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上 对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置 重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止 算法描述 快速排序 基本思想: 快速排序是通过比较关键字、交换记录,以某个记录为界(该记录称为支点),将待排序列分成两部分。 其中,一部分所有记录的关键字大于等于支点记录的关键字,另一部分所有记录的关键字小于支点记录的关键字。 我们将待排序列按关键字以支点记录分成两部分的过程,称为一次划分。 对各部分不断划分,直到整个序列按关键字有序。 快速排序 排序过程: 通常取第一个记录的值为基准值。 附设两个指针low和high ,初值分别指向第一个记录和最后一个记录,设支点记录为r[0] ,(r[0]通常取第一个记录的值为基准值。) 首先从 high所指位置起向前搜索,找到第一个小于基准值的记录与基准记录交换 然后从low所指位置起向后搜索,找到第一个大于基准值的记录与基准记录交换 重复这两步直至low=high为止。 快速排序图示 4.2.4 选择排序 1. 直接选择排序 2. 树形选择排序 3. 堆排序 直接(简单)选择排序 排序过程 首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换 再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换 重复上述操作,共进行n-1趟排序后,排序结束 2. 树形选择排序 算法思想: 按照锦标赛的思想进行,将n个参赛选手看成完全二叉树的叶子节点,则该完全二叉树有2n-2或2n-1个节点。 首先两两进行比赛(在树中是兄弟的进行,否则轮空,直接进入下一轮),胜出的兄弟间再两两进行比较,直到产生第一名 接下来将作为第一名的节点看成最差的,并从该节点开始沿该节点到根路径上
您可能关注的文档
- AUX奥克斯压缩机检修培训资料1.pdf
- A教师教你如何将3类作文提升到1类作文.doc
- AV4032A频谱仪课件2 通用仪表PPT课件.ppt
- b 第二章 人力资源规划 人力资源管理课件.ppt
- B08第1章概述 计算机组成与结构 教学课件.ppt
- A类课程课件 能源与节能管理基础 下半年能源管理师资格培训课件.ppt
- B 柜内——端子排功能表8.ppt
- An overview of corpus-based studies of Chinese learners’ English 语料库语言学PPT讲义.ppt
- B08第2章运算方法与运算器 计算机组成与结构 教学课件.ppt
- B08第3章主存与存储体系 计算机组成与结构 教学课件.ppt
- ch4_图形界面new_简化 linux课件.ppt
- Ch4_3 第4章 交流绕组—磁动势 电机学课件.ppt
- ch4_时钟及电源管理 嵌入式系统原理与应用技术 教学课件.ppt
- ch4使命与战略目标 公司战略管理 教学课件.ppt
- ch4总结 研究生现代控制工程试卷 课件.ppt
- ch4李亚普诺夫稳定性分析 研究生现代控制工程试卷 课件.ppt
- Ch5 POSITION MEASURING DEVICES 数控技术英文版课件.ppt
- ch5 总结 研究生现代控制工程试卷 课件.ppt
- ch5 同步时序逻辑电路的设计 数字电子技术基础 教学课件.ppt
- CH5 数组和广义表 数据结构PPT(教学课件).ppt
原创力文档


文档评论(0)