版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
筛选法排序
21346
21346不交换交换
31246
41236交换交换
61234
6
1234交换
6
2134交换交换
6
3124
6
4123
6
4
123交换
6
4
213
6
4
312交换
6
4
312交换
6
4
3
2
1轮比较轮比较轮比较轮比较2021/6/271筛选法排序例:筛选法排序。(设从大到小排序)[分析]:将N个无序数据存放在数组中,对数组进行N-1轮扫视。第一轮扫视:将A(1)与A(2)比较,若A(1)<A(2),则交换A(1)和A(2)的值;再将A(1)与A(3)、A(4)……
A(N)依次按以上规则比较和交换,第一轮扫视完毕,N个数中最大数存放到A(1)中。第二轮扫视:将A(2)与A(3)、A(4)…A(N)依次按以上规则比较;第三轮扫视:将A(3)与A(4)、A(5)…A(N)依次按以上规则比较;第N-1扫视:将A(N-1)与A(N)按以上规则比较排序完成。2021/6/272筛选法排序假定待排序的N个数已存放在数组A中1.确定排序需要几轮的比较ForI=1ToN–1NextI1.确定排序需要几轮的比较2.进行每一轮的比较
ForJ=
To
NextJ1.确定排序需要几轮的比较2.进行每一轮的比较3.在每一轮比较中,比较两个数的大小,根据比较结果决定是否交换两个数IfA(I)<A(J)thenT=A(I)A(I)=A(J)A(J)=TEndIfI
+
1
NText1=Text1&Str(A(I))Text1=Text1&Str(A(N))2021/6/273筛选法排序返回2021/6/274用元素A(Pointer)去比较直接排序
24536I:1Pointer:1
64532交换Pointer:2交换Pointer:3不交换交换Pointer:5第一轮比较结束I≠Pointer则交换A(I)、A(Pointer)即交换A(1)和A(6)
64532第一轮比较第二轮比较I:2Pointer:2交换Pointer:3不交换不交换第二轮比较结束I≠Pointer则交换A(I)、A(Pointer)即交换A(2)和A(3)
6
5432第三轮比较
6
5
432I:3Pointer:3不交换不交换第三轮比较结束I=Pointer则不交换A(I)、A(Pointer)第四轮比较
6
5
4
32I:4Pointer:4不交换第四轮比较结束I=Pointer则不交换A(I)、A(Pointer)排序结束
6
5
4
3
22021/6/275直接排序设待排序的N个数存放在数组A中1.确定排序需要几轮的比较ForI=1ToN–1NextI1.确定排序需要几轮的比较2.设置这一轮指针初值Pointer=I1.确定排序需要几轮的比较2.设置这一轮指针初值3.开始一轮的比较ForJ=I+1ToNNextJIfA(Pointer)<A(J)ThenPointer=JEndIf1.确定排序需要几轮的比较2.设置这一轮指针初值3.开始一轮的比较4.进行比较,根据比较结果
决定是否改变指针的值1.确定排序需要几轮的比较2.设置这一轮指针初值3.开始一轮的比较4.进行比较,根据比较结果
决定是否改变指针的值5.一轮的比较结束后,根据指针的值与I是否不同,确定是否交换A(I)、A(Pointer)的值IfI<>OptionterThenT=A(I)A(I)=A(Pointer)A(Pointer)=A(I)EndIf2021/6/276直接排序返回2021/6/277冒泡法排序[分析]:(设从小到大排序)第一轮比较:将A(1)和A(2)比较,若A(1)>A(2)则交换这两个数组元素的值,否则不交换;然后再用A(2)和A(3)比较,处理方法相同;
以此类推,直到A(N-1)和A(N)比较后,这时A(N)中就存放了N个数中最大的数。第二轮比较:将A(1)和A(2)、A(2)和A(3),
,
A(N-2)和A(N-1)比较,处理方法和第一轮相同,这一轮比较结束后A(N-1)中就存放了N个数中第二小的数。第N-1轮比较:将A(1)和A(2)进行比较,处理方法同上,比较结束后,这N个数按从小到大的次序排列好。每一轮的比较后都会使小数逐渐浮起来,大数下沉,就象冒泡一样2021/6/278冒泡排序举例:对整数序列85243按升序排序8524352438243582345823458初始状态第一趟结果第二趟结果第三趟结果第四趟结果小的逐渐上升每趟沉下一个最大的8582483885243程序2021/6/279冒泡法排序一2021/6/2710冒泡排序举例:对整数序列85243按升序排序82345初始状态第一趟结果第二趟结果小的逐渐上升每趟沉下一个最大的8
238
48
58
885243234582021/6/2711冒泡法排序二(按降序排列)第一论扫视:1、6、5、4、3、26、1、5、4、3、26、5、1、4、3、26、5、4、1、3、26、5、4、3、1、26、5、4、3、2、1第二轮扫视:6、5、4、3、2、16、5、4、3、2、16、5、4、3、2、16、5、4、3、2、16、5、4、3、2、1发生交换,继续下一轮比较没发生交换,结束比较2021/6/2712Switch=TrueDoWhileSwitchSwitch=FalseN=N-1Loop冒泡法排序二1.设置一个控制循环开关,当某一轮比较中不发生数据交换时,使开关值为假,标志排序结束
N=N-1
1.设置一个控制循环开关,当某一轮比较中不发生数据交换时,使开关值为假,标志排序结束2.进行某一轮比较,若发生数据交换,设置开关值为真ForI=1ToNIfA(I)>A(I+1)ThenSwitch=TrueTem=A(I)A(I)=A(I+1)A(I+1)=TemEndIfNextI返回2021/6/2713Switch=TrueDoWhileSwitch
Loop冒泡法排序二1.进行某一轮比较,若发生数据交换,设置开关值为真ForI=1ToNIfA(I)>A(I+1)ThenSwitch=TrueTem=A(I)A(I)=A(I+1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南省陆良县公证处招聘公证员助理2人模拟试卷(精练)附答案详解
- 2026四川南充文化旅游职业学院引进高层次人才公开考核招聘7人参考题库含答案详解(基础题)
- 第二单元:混合运算(复习课件)数学人教版三年级上册(新教材)-中考备考真题
- 2026甘肃张掖市高台县农业农村局特聘农技员招募3人模拟试卷带答案详解(巩固)
- 2026甘肃省城乡发展投资集团有限公司校园招聘15人模拟试卷【模拟题】附答案详解
- 南阳高中考试题库及答案
- 心内科学高级职称考试题及答案
- 车路云一体化服务生态
- 智慧城市与数字孪生
- 2026四川凉山州越西县医疗卫生辅助岗位招募6人笔试题库及参考答案详解(满分必刷)
- 北师大版九年级数学下册 第二章 二次函数复习题(课件)
- 三年级上册《劳动》期末试卷及答案
- 画法几何及土木工程制图课件
- 机械设备的润滑课件
- SL703-2015灌溉与排水工程施工质量评定表
- 二升三暑期奥数培优(学生教材)
- 门式启闭机主梁下主梁1工艺设计卡
- 人教版四年级下册数学期末测试卷(模拟题)
- 航理ppt课件 7-1概述及航空活塞动力装置-1
- 人教版数学必修一课后习题答案
- YS/T 1018-2015铼粒
评论
0/150
提交评论