1 / 5
文档名称:

vb常用算法6排序.doc

格式:doc   大小:59KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

vb常用算法6排序.doc

上传人:shujukd 2018/11/11 文件大小:59 KB

下载得到文件列表

vb常用算法6排序.doc

相关文档

文档介绍

文档介绍:VB常用算法----排序1、选择法排序(1)   利用循环从n个数中选出最小数的下标,结束循环后,将最小数与第一个数交换位置;(2)    除第一个数外,在剩下的n-1个数中再按方法(1)选出次小的数,与第二个数交换位置;(3)    以此类推,最后构成递增序列。譬如: 8 6 9 3 2 7第一轮交换后 2 6 9 3 8 7第二轮交换后 2 3 9 6 8 7第三轮交换后 2 3 6 9 8 7第四轮交换后 2 3 6 7 8 9第五轮无交换 2 3 6 7 8 9 程序代码如下:PrivateSubxzPaiXu(a()AsDouble,shengAsBoolean)'a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。DimiAsInteger,jAsIntegerDimtempAsDoubleDimmAsIntegerFori=LBound(a)ToUBound(a)-1'进行数组大小-1轮比较m=i'在第i轮比较时,假定第'i个元素为最值元素Forj=i+1ToUBound(a)'在剩下的元素中找出最'值元素的下标并记录在m中IfshengThen'若为升序,则m记录最小元素'下标,否则记录最大元素下标Ifa(j)<a(m)Thenm=jElseIfa(j)>a(m)Thenm=jEndIfNextj'将最值元素与第i个元素交换temp=a(i)a(i)=a(m)a(m)=tempNextiEndSub 调用该过程示例:mand1_Click()Dimb(6)AsDoubleb(1)=8b(2)=6b(3)=9b(4)=3b(5)=2b(6)=7CallxzPaiXu(b,True)Fori%=1To6Printb(i)NextEndSub2、冒泡法排序选择排序法在每一轮排序时寻找最值元素的下标,出了内循环(一轮排序结束时,确定最值下标),再交换最小数的位置;而冒泡法在每一轮排序时将相邻的数比较,当次序不对时就立即交换位置,出了内循环,最值数已经冒出。譬如:第一轮比较结束后,最值冒出 8 6 9 3 2 7869327869237862937826937286937 ….第二轮次最值冒出 238697 ….第三轮排序后 236879 ….第四轮排序后 236789….第五轮排序后236789  程序代码如下: PrivateSubmpPaiXu(a()AsDouble,shengAsBoolean)'a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。DimiAsInteger,jAsIntegerDimtempAsDoubleDimmAsIntegerFori=LBound(a)ToUBound(a)-1'进行n-1轮比较Forj=UBound(a)Toi+1Step-1'从n到i个元素两两进行比较'循环变量j终值为I+1,是因为比较过程中元素下标用到j-1IfshengThen'若次序不对,马上进行交换Ifa(j)<a(j-1)Thentemp=a(j)a(j)=a(j-1)a(j-1)=tempEndIfElseIfa(j)>a(j-1)Thentemp=a(j)a(j)=a(j-1)a(j-1)=tempEndIfEndIf'出了内循环,一轮排序结束Nextj'最值元素冒