版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、冒泡法排序原理,冒泡法排序,冒泡法排序原理,经典算法介绍: 排序问题是程序设计中的典型问题之一,它有很广泛的应用,比如给你一组学生成绩,要你输出前2 0 名的成绩。这时你就要用到排序。再比如要问你中国的GDP排世界第几,你要先把各国GDP排个序,才知道中国在第几。,所谓排序就是将数组中的各元素的值按从小到大的顺序或按从大到小的顺序重新排列。,排序过程一般都要进行元素值的比较和元素值的交换。,冒泡法排序,冒泡法排序原理,冒泡法原理,分析: 假设有N个数据放在数组a中,现要把这N个数从小到大排序. 冒泡排序法的基本思想是: 第一:在a0到aN-1的范围内,依次比较两个相邻元素的值, 若aJaJ+1
2、,则交换aJ与aJ+1,J的值取0,1,2,N-2;经过 这样一趟冒泡,就把这N个数中最大的数放到aN-1中.,看图示,例1:用冒泡排序法对8个整数6,8,5,4,6,9,3,2进行从小到大排序.,冒泡法排序原理,冒泡法原理,第二:再对a0到aN-2的范围内再进行一趟冒泡,又将该范围内的最大值换到了aN-2中.,看图示二,Swap变量作用,看图示三,第四:如果在某趟冒泡过程中没有交换相邻的值,则说明排序已完成,可以提前结束处理.,第三:依次进行下去,最多只要进行N-1趟冒泡,就可完成排序.,看流程,冒泡法排序原理,冒泡法排序,现假设有8个随机数已经在数组中,开始排序 初始状态: 数组a a0
3、a1 a2 a3 a4 a5 a6 a7,第一趟排序: 两两相邻比较:,总结,回到思路一,冒泡法排序原理,第二趟冒泡排序开始: 此时的待排序元素 a0 a1 a2 a3 a4 a5 a6 a7,冒泡法排序,同样对待排序元素两两比较后结果为:,接着第三趟冒泡排序结果为:,回到思路二,冒泡法排序原理,冒泡法排序,同样第四趟结果为:,第六趟结果为:,第七趟结果(最终)为:,第五趟结果为:,回到思路二,看流程,冒泡法排序原理,冒泡法排序流程图,程序整体流程:,开始,结束,输入数据,输出数据,冒泡排序,细化输入数据流程:,i = 0,i8,MOVX A,DPTR,i +,细化输出数据流程:,冒泡法排序原
4、理,执行第i趟冒泡排序,冒泡法排序流程图,i +,i8-1,i =0,写程序,j= 0,j8-i-1,j +,比较相邻两元素的值并交换,ajaj+1,交换aj与 aj+1的值,冒泡法排序原理,冒泡法排序流程图,i +;,i8-1,i =0,Y,N,j8-i-1,N,Y,j +,swap= 0 j= 0,加 入 Swap 变 量 的 流 程 图,程 序,!(swap),break,Y,冒泡法排序原理,冒泡法程序,main( ) int i,j,a8,temp,swap; clrscr( ); for(i=0;i8;i+) scanf(%d,for(i=0;i8;i+) printf(%d,ai)
5、; printf(n); , ,注:对n个元素冒泡排序第i趟排序的待排序元素是a0到an-i-1。这里的i表示数组的下标.,swap=1;,if (!swap) break;,swap=0;,流程图,if ( aj aj+1 ) temp=aj; aj=aj+1; aj+1=temp; ,for(j=0;j8-i-1;j+),回到第四点,上一页,比较,for(i=0;i8-1;i+),冒泡法排序原理,冒泡法,swap 变量的作用 如果在某趟冒泡过程中没有交换相邻的值,则说明排序已完成,可以提前结束处理. 比如:为原始数列:8、15、27、96、32、65、78、79 这个序列用冒泡法排序,一趟
6、之后就得到升序结果,而之后的六趟都可以不要进行。 所以,swap变量就是用来标识如果某趟排序之后已经得到最终结果,则多余的次数就无须进行。,回到流程图,冒泡法排序原理,冒泡法与选择法的比较,用选择排序法对键盘输入的N个数从小到大进行排序.,基本思想: 假设有N个数据放在数组a中,现要把这N个数从小到大排序. 首先: 在a0到aN-1的范围内,选出最小值与a0交换; 然后: 在a1到aN-1范围内,选出最小值与a1交换; 接着是a2到aN-1的范围,这样依次进行下去,进行N-1次选择后就可完成排序.,即第i趟排序的待排序范围是aiaN-1的元素,要从中选出值最小的元素并与ai交换位置。,冒泡法排序原理,冒泡法与选择法的比较,a0 a1 a2 a3 a4 a5 a6 a7 数组a,K,K,i,K,K,K,2,6,每趟选择排序是找到待排序序列中最小的元素,把它交换到待排序的最前的位置。所以,一趟只有一次交换。,回到冒泡图示,K,5,6,8,冒泡法排序原理,总 结,本次课主要内容: 1.冒泡法基本思想,通过n-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年地质灾难与城市规划的协调发展
- 2025年广州事业单位招考试题及答案
- 2025年昌平事业单位财务考试题及答案
- 2026年绿色建筑的流体力学设计原则
- 2025年心理科护士招聘笔试试题及答案
- 2025年经济学保研专业笔试真题及答案
- 2025年埭溪水务事业单位招聘考试及答案
- 2025年南京公务员事业单位考试及答案
- 2026河南中原再担保集团科技融资担保有限公司招聘4人笔试备考题库及答案解析
- 2026年丹阳市卫生健康委员会所属事业单位公开招聘工作人员101人考试参考题库及答案解析
- 2026中国电信四川公用信息产业有限责任公司社会成熟人才招聘备考题库及1套完整答案详解
- 2025班组三级安全安全教育考试题库(+答案解析)
- 学霸寒假语文阅读集训五年级答案
- 2025年复旦三位一体浙江笔试及答案
- 成都印钞有限公司2026年度工作人员招聘参考题库含答案
- GB/T 28743-2025污水处理容器设备通用技术条件
- 人工智能-历史现在和未来
- 半导体厂务项目工程管理 课件 项目7 气体的分类
- 安徽省亳州市2025届高三上学期期末质量检测生物试卷(含答案)
- 2026年1月上海市春季高考数学试题卷(含答案及解析)
- 深度解析(2026)DZT 0064.45-1993地下水质检验方法 甘露醇-碱滴定法 测定硼
评论
0/150
提交评论