




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、筛选法排序筛选法排序 2 1 3 4 6 2 1 3 4 6不交换不交换交换交换 3 1 2 4 6 4 1 2 3 6交换交换交换交换 6 1 2 3 4 6 1 2 3 4交换交换 6 2 1 3 4交换交换交换交换 6 3 1 2 4 6 4 1 2 3 6 4 1 2 3交换交换 6 4 2 1 3 6 4 3 1 2交换交换 6 4 3 1 2交换交换 6 4 3 2 1第一轮比较第一轮比较第二轮比较第二轮比较第三轮比较第三轮比较第四轮比较第四轮比较筛选法排序筛选法排序例:筛选法排序。(设从大到小排序)例:筛选法排序。(设从大到小排序)分析分析:将:将N个无序数据存放在个无序数据存放
2、在 数组中,对数组进行数组中,对数组进行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)依次按以上)依次按
3、以上规则比较;规则比较;第第N-1扫视扫视: 将将A(N-1)与)与A(N)按以上规则比较排序完成。)按以上规则比较排序完成。筛选法排序筛选法排序假定待排序的假定待排序的N个数已存放在数组个数已存放在数组 A 中中1.确定排序需要几轮的比较确定排序需要几轮的比较For I = 1 To N 1For I = 1 To N 1Next INext I1.确定排序需要几轮的比较确定排序需要几轮的比较2.进行每一轮的比较进行每一轮的比较 For J = For J = To To Next JNext J1.确定排序需要几轮的比较确定排序需要几轮的比较2.进行每一轮的比较进行每一轮的比较3.在每一轮
4、比较中,比较两在每一轮比较中,比较两 个数的大小,根据比较结个数的大小,根据比较结 果决定是否交换两个数果决定是否交换两个数If A(I) A(J) thenIf A(I) A(J) Then If A(I) A(J) Then Temp = A(I) Temp = A(I) A(I) = A(J) A(I) = A(J) A(J) = Temp A(J) = Temp End If End If用元素用元素A(Pointer) 去比去比较较直接排序直接排序 2 4 5 3 6I : 1Pointer: 1 6 4 5 3 2交换交换Pointer: 2交换交换Pointer: 3不交换不交换
5、交换交换Pointer: 5第一轮比较结束第一轮比较结束I Pointer I Pointer 则交换则交换A(I) A(I) 、A(Pointer)A(Pointer)即交换即交换A(1)A(1)和和A(6)A(6) 6 4 5 3 2第一轮比较第一轮比较第二轮比较第二轮比较I : 2Pointer: 2交换交换Pointer: 3不交换不交换不交换不交换第二轮比较结束第二轮比较结束I Pointer I Pointer 则交换则交换A(I) A(I) 、A(Pointer)A(Pointer)即交换即交换A(2)A(2)和和A(3)A(3) 6 5 4 3 2第三轮比较第三轮比较 6 5
6、4 3 2I : 3Pointer: 3不交换不交换不交换不交换第三轮比较结束第三轮比较结束I I Pointer Pointer 则不交则不交换换A(I) A(I) 、A(Pointer)A(Pointer)第四轮比较第四轮比较 6 5 4 3 2I : 4Pointer: 4不交换不交换第四轮比较结束第四轮比较结束I I Pointer Pointer 则不交则不交换换A(I) A(I) 、A(Pointer)A(Pointer)排序结束排序结束 6 5 4 3 2直接排序直接排序设待排序的设待排序的N个数存放在数组个数存放在数组 A 中中1.确定排序需要几轮的比较确定排序需要几轮的比较F
7、or I = 1 To N 1Next I1.确定排序需要几轮的比较确定排序需要几轮的比较2.设置这一轮指针初值设置这一轮指针初值Pointer = I1.确定排序需要几轮的比较确定排序需要几轮的比较2.设置这一轮指针初值设置这一轮指针初值3.开始一轮的比较开始一轮的比较For J = I + 1 To NNext JIf A(Pointer) A(J) Then Pointer = JEnd If1.确定排序需要几轮的比较确定排序需要几轮的比较2.设置这一轮指针初值设置这一轮指针初值3.开始一轮的比较开始一轮的比较4.进行比较,根据比较结果进行比较,根据比较结果 决定是否改变指针的值决定是否
8、改变指针的值1.确定排序需要几轮的比较确定排序需要几轮的比较2.设置这一轮指针初值设置这一轮指针初值3.开始一轮的比较开始一轮的比较4.进行比较,根据比较结果进行比较,根据比较结果 决定是否改变指针的值决定是否改变指针的值5.一轮的比较结束后,根据一轮的比较结束后,根据指针的值与指针的值与 I 是否不同,确是否不同,确定是否交换定是否交换A(I)、A(Pointer) 的值的值If I Optionter Then T = A( I ) A( I ) = A( Pointer ) A( Pointer ) = A( I )End If直接排序直接排序Option ExplicitOption
9、ExplicitOption Base 1Option Base 1Private Sub CmdSort_Click()Private Sub CmdSort_Click() Dim A(10) As Integer, Temp As Integer Dim A(10) As Integer, Temp As Integer Dim I As Integer, J As Integer Dim I As Integer, J As Integer Dim Pointer As Integer Dim Pointer As Integer Randomize Randomize For I =
10、 1 To 10 For I = 1 To 10 A(I) = Int(Rnd * (100 - 1) + 1 A(I) = Int(Rnd * (100 - 1) + 1 Text1 = Text1 & Str(A(I) Text1 = Text1 & Str(A(I) Next I Next I For I = 1 To 9 For I = 1 To 9 Pointer = I Pointer = I For J = I + 1 To 10 For J = I + 1 To 10 If A(J) A(Pointer) Then If A(J) AA(2 2)则交换)则交换这
11、两个数组元素的值,否则不交换;然后再用这两个数组元素的值,否则不交换;然后再用A A(2 2)和)和A A(3 3)比较,处理方法相同;比较,处理方法相同;以此类推,直到以此类推,直到A A(N-1N-1)和)和A A(N N)比较后,这时比较后,这时A A(N N)中就存放了)中就存放了N N个数中最大的数。个数中最大的数。第二轮比较:第二轮比较:将将A A(1 1)和)和A A(2 2)、)、A A(2 2)和)和A A(3 3),),A A(N-2N-2)和)和A A(N-1N-1)比较,处理方法和第一轮相同,这一轮比)比较,处理方法和第一轮相同,这一轮比较结束后较结束后A A(N-1N
12、-1)中就存放了)中就存放了N N个数中第二小的数。个数中第二小的数。第第N-1N-1轮比较:轮比较:将将A A(1 1)和)和A A(2 2)进行比较,处理方法同上,)进行比较,处理方法同上, 比较结束后,这比较结束后,这N N个数按从小到大的次序排列好。个数按从小到大的次序排列好。每一轮的比较后都会使小数逐渐浮起来,大数下沉,每一轮的比较后都会使小数逐渐浮起来,大数下沉,就象冒泡一样就象冒泡一样冒泡排序举例:冒泡排序举例:对整数序列对整数序列 8 5 2 4 3 8 5 2 4 3 按升序排序按升序排序8524352438243582345823458初初始始状状态态第第一一趟趟结结果果第
13、第二二趟趟结结果果第第三三趟趟结结果果第第四四趟趟结结果果小小的的逐逐渐渐上上升升每每趟趟沉沉下下一一个个最最大大的的858248 3885243程序程序冒泡法排序一冒泡法排序一Option ExplicitOption ExplicitOption Base 1Option Base 1Dim A(10) As IntegerDim A(10) As IntegerPrivate Sub Command1_Click()Private Sub Command1_Click() Dim I As Integer, J As Integer Dim I As Integer, J As Inte
14、ger Dim T As Integer, N As Integer Dim T As Integer, N As Integer N = UBound(A) N = UBound(A) For I = 1 To N - 1 For I = 1 To N - 1 For J = 1 To (N -I ) For J = 1 To (N -I ) If A(J) A(J + 1) Then If A(J) A(J + 1) Then T = A(J) T = A(J) A(J) = A(J + 1) A(J) = A(J + 1) A(J + 1) = T A(J + 1) = T End If
15、 End If Next J Next J Next I Next IEnd SubEnd SubPrivate Sub Command4_Click()Private Sub Command4_Click() Dim I As Integer, N As Integer Dim I As Integer, N As Integer冒泡排序举例:冒泡排序举例:对整数序列对整数序列 8 5 2 4 3 8 5 2 4 3 按升序排序按升序排序82345初初始始状状态态第第一一趟趟结结果果第第二二趟趟结结果果小小的的逐逐渐渐上上升升每每趟趟沉沉下下一一个个最最大大的的8 238 48 58 885
16、24323458冒泡法排序二冒泡法排序二 (按降序排列)(按降序排列)第一论扫视:第一论扫视: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发生交换,继续下一轮比较发生交换,继续下一轮比较没发生交换,结束比较没发生交换,结束比较Switch = TrueDo While Switch Switch = False N = N - 1Loop冒泡法排序二冒泡法排序二1.设置一个控
17、制循环开关,设置一个控制循环开关,当某一轮比较中不发生数当某一轮比较中不发生数据交换时,使开关值为假,据交换时,使开关值为假,标志排序结束标志排序结束 N = N - 1 1.设置一个控制循环开关,设置一个控制循环开关,当某一轮比较中不发生数当某一轮比较中不发生数据交换时,使开关值为假,据交换时,使开关值为假,标志排序结束标志排序结束2.进行某一轮比较,若发生进行某一轮比较,若发生数据交换,设置开关值为数据交换,设置开关值为真真For I = 1 To N If A(I) A(I + 1) Then Switch = True Tem = A(I) A(I) = A(I + 1) A(I + 1) = Tem End IfNext I返回返回Switch = TrueDo While Switch Loop冒泡法排序二冒泡法排序二1.进行某一轮比较,若发生进行某一轮比较,若发生数据交换,设置开关值为数据交换,设置开关值为真真For I = 1 To N If A(I) A(I + 1) Then Switch = True Tem =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核心素养部编版语文二年级下册-4. 邓小平爷爷植树 第1课时课件
- 地板展厅租赁协议书
- 协会员工转让协议书
- 合伙开厂入股协议书
- 工程法规实务知识试题及答案
- 员工持股奖励协议书
- 医疗健康行业数字化转型下的职业发展
- 2025年高分复习会计实务试题及答案
- 地热能源供暖系统在北方地区冬季供暖中的应用现状与政策环境分析报告
- 工程法规考生必读试题及答案
- 2025广东佛山市南海区政务网络中心招聘政府辅助工作人员招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 2025江苏宜兴市国有资本投资控股集团有限公司招聘10人笔试参考题库附带答案详解
- 导管相关性血流感染防控与护理要点
- 《心律失常的药物治疗》课件
- 广东省广州市2023-2024学年八年级下学期物理期中考试试卷(含答案)
- 10.1 认识民法典 课件-2024-2025学年统编版道德与法治七年级下册
- 2025至2030全球及中国黑磷行业销售模式与发展前景趋势研究报告
- 2025河南省水利第一工程局集团有限公司招聘49人笔试参考题库附带答案详解
- 2025年北京大兴区中考一模数学试卷及答案详解(精校打印)
- 2025年甘肃省武威第二十中学生物七年级下册新人教版期中模拟练习题(含答案)
- 制造业产品全生命周期管理流程
评论
0/150
提交评论