




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB常用算法-排序1、选择法排序(1) 利用循环从n个数中选出最小数的下标,结束循环后,将最小数与第一个数交换位置;(2) 除第一个数外,在剩下的n-1个数中再按方法(1)选出次小的数,与第二个数交换位置; (3) 以此类推,最后构成递增序列。 譬如: 869327 第一轮交换后269387 第二轮交换后239687 第三轮交换后236987 第四轮交换后236789 第五轮无交换236789 程序代码如下: Private Sub xzPaiXu(a() As Double, sheng As Boolean) a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。 Dim i As Integer, j As Integer Dim temp As Double Dim m As Integer For i = LBound(a) To UBound(a) - 1 进行数组大小-1轮比较 m = i 在第i轮比较时,假定第 i个元素为最值元素 For j = i + 1 To UBound(a) 在剩下的元素中找出最 值元素的下标并记录在m中 If sheng Then 若为升序,则m记录最小元素 下标,否则记录最大元素下标 If a(j) a(m) Then m = j End If Next j 将最值元素与第i个元素交换 temp = a(i) a(i) = a(m) a(m) = temp Next i End Sub 调用该过程示例: Option Base 1 Private Sub Command1_Click() Dim b(6) As Double b(1) = 8 b(2) = 6 b(3) = 9 b(4) = 3 b(5) = 2 b(6) = 7 Call xzPaiXu(b, True) For i% = 1 To 6 Print b(i) Next End Sub 2、冒泡法排序选择排序法在每一轮排序时寻找最值元素的下标,出了内循环(一轮排序结束时,确定最值下标),再交换最小数的位置;而冒泡法在每一轮排序时将相邻的数比较,当次序不对时就立即交换位置,出了内循环,最值数已经冒出。 譬如: 第一轮比较结束后,最值冒出869327 8 6 9 3 2 7 8 6 9 2 3 7 8 6 2 9 3 7 8 2 6 9 3 7 2 8 6 9 3 7 . 第二轮次最值冒出 2 3 8 6 9 7 . 第三轮排序后2 3 6 8 7 9 . 第四轮排序后 2 3 6 7 8 9 . 第五轮排序后2 3 6 7 8 9 程序代码如下: Private Sub mpPaiXu(a() As Double, sheng As Boolean) a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。 Dim i As Integer, j As Integer Dim temp As Double Dim m As Integer For i = LBound(a) To UBound(a) - 1 进行n-1轮比较 For j = UBound(a) To i + 1 Step -1 从n到i个元素两两进行比较 循环变量j终值为I+1,是因为比较过程中元素下标用到j-1 If sheng Then 若次序不对,马上进行交换 If a(j) a(j - 1) Then temp = a(j) a(j) = a(j - 1) a(j - 1) = temp End If End If 出了内循环,一轮排序结束 Next j 最值元素冒到最上边 Next i End Sub 调用该过程代码与前面的选择法排序相同。 3、实战练习 1) 完善程序填空(2003秋二(10) 下面是一个采用拉锯式排序法对数组元素按升序进行排序的程序,所谓“拉锯式排序法”是前一遍把最小的元素从下到上送到最上的位置,后一遍则是从上到下把最大的元素送到最下的位置。 Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer,i As Integer For i = 1 To 10 a(i) = Int(Rnd * 10)+1 Text1 = Text1 & Str(a(i) Next i Call shaker_sort(a) For i = 1 To 10 Text2 = Text2 & Str(a(i) Next i End Sub Private Sub Shaker_sort(k() As Integer) Dim i As Integer, c As Integer, d As Integer Dim t As Integer c = 1 d = ( 1 ) Do For ( 2 ) Step -1 If k(i - 1) k(i) Then t = k(i - 1): k(i - 1) = k(i): k(i) = t End If Next i ( 3 ) For i = c + 1 To d If ( 4 ) Then t = k(i - 1): k(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钻井流程培训课件
- 钳工安全知识培训
- 知识产权宣传培训工作要点课件
- 知识产权定制化培训方案课件
- 知识产权培训预告文案课件
- 安全生产法(2025版)试题(含答案)
- 2025年旅游地产项目规划设计与旅游产业创新驱动发展战略研究
- 钣金基础知识课件
- 印刷排版岗位招聘笔试题与参考答案2025年
- 基金项目经理招聘笔试题及解答(某大型集团公司)2025年
- 资产并购咨询合同模板
- 字画作品买卖合同模板
- 人教PEP版小学英语五年级下册复习教案(全册)
- 2024年初中数学人教版七年级上册新教材培训心得体会
- NB-T 33025-2020 电动汽车快速更换电池箱通.用要求
- 延保服务合同范本
- 【小升初】2024-2025学年四川省成都市下学期新七年级分班真题数学试题(含答案)
- 广东省深圳市2022-2023学年八年级下学期英语期末试卷(含答案)
- DB32-T 1510-2015升降作业平台检验规则
- 偏光片产业链分析报告
- 读书分享交流《爱心与教育》课件
评论
0/150
提交评论