//冒泡算法
//数据排序
//首先得先声明一个数据 我们用随机数的方式生成一个数据, 然后利用冒泡算法给数组排序
Dim myarray(5)//声明一个数组
For i = 0 To UBound(myarray) Step 1 //循环用随机数给各个元素赋值
myarray(i) = 随机数(10, 50)
TracePrint myarray(i)
Next
//随机数赋完值 然后我们来进行冒泡算法 数据排序让他从小到大排序
// 我们先来模拟一下各个元素的数据 然后来分析出冒泡算法的原理
Dim myarray_1(6)//假设我们让数据各元素等于 15 18 21 11 30 10
myarray_1(0) = 15
myarray_1(1) = 18
myarray_1(2) = 21
myarray_1(3) = 11
myarray_1(4) = 30
myarray_1(5) = 10
TracePrint myarray_1(0)&" "&myarray_1(1)&" "&myarray_1(2)&" "&myarray_1(3)&" "&myarray_1(4)&" "&myarray_1(5)
//好了我们现在假设出来了这个数组元素的值的顺序是
//15 18 21 11 30 10 //我们要让他从小到大的排序
/*
分析思路:
我们先求出这六个数里的最小数 把他放到第0个位置里 然后在求出剩下五个数的最小数为别放到第12345位置里我们让第0元素跟第1素数比较 如果>第1元素 就把他俩的值互换了(这里注意两数互换数值必须得有个临时变量。)
在跟第2元素去比较 如果<说明第0元素小于第1元素 那么就跟第三元素比较如此循环到结束 我们就把
数组里所有的元素的值中的最小数放到数组元素0的位置里了
(这里很多人不明白怎么得到最小元素的 注意这里有一个互换 第1个最小元素我们永远是用元素0跟12345元素
来一个一个的比较的 第0元素值<第1元素那就不用比较了,直接跟第2个元素比较 假如 第0元素>第2元素 我们
就把第2个元素的值赋给第0元素 在把第2个元素的值给第0元素 这样只是值变了但是位置没有改变 然后继续用
?元素也就是刚才第2元素的值 跟第3元素比较<的话不用理 >就把第3元素跟0元素在互换了这样第0元素里
永远放的是最小的值 对不对。 这样是不是数组里所有的元素的值中的最小数放到数组元素0的位置里了得到第一个了 然后我们在用这个方法 来得到倒数第二第三第四第五的最小数 然后分别赋给数组元素12345里
这样是不是就做到了最小到大的排序了。 (这里需要注意的是 第二个最小数是从元素1开始的而不是0因为0里
已经放了最最最小的数了) 分析完成了我们来写程序实现他
*/
//因为如果二次处理所以我们需要用到循环嵌套。For i = 0 To 4 Step 1 //因为我们第一次处理是0跟1处理 那第二次就是1跟2处理 之后 2跟3 3跟4 4跟5 不需要5跟6因为没有 // 六 所以循环五次就可以 你总不成 出来数组(6)吧, 我们的数据一组才6个,所以千万注意这点。
//这个循环是来把求的最小数排序起来的
For j = i + 1 To 5 Step 1//这里千万要注意一下 因为我们的要让前元素跟后元素比较,
//所以后元素的数一定是前元素的+1 比如 元素 1比2 2比3 3比4 4比5
//这样的 不能出现2比2 2比1 这样的。
//我们要比较的数 等于是一起在递增 所以不能 用 j=0或j=1 这样的
//原因是不管你怎么设置,当我们在从大循环进入小循环的时候 j的值
//会被初始化成 j=0或j=1 这样就会出现 i>j 就是 2比1这种情况了
//因为I的值只要小循环结束后就会+1 然后进入小循环 J就被初始化了
//所以2比1这样的情况就出现了。 这不是我们想要的结果
//这个循环是来求最小数的
if myarray(i)>myarray(j) //注意因为要跟第1个元素比较 所以J必须得是1才能访问到第1元素
互换数变量 = myarray(i)
myarray(i) = myarray(j)
myarray(j) = 互换数变量
End If
TracePrint i
TracePrint j
TracePrint 互换数变量
TracePrint myarray(i)
TracePrint myarray(j)
TracePrint myarray(0)&" "&myarray(1)&" "&myarray(2)&" "&myarray(3)&" "&myarray(4)&" "&myarray(5)
Next
Next
Function 随机数(最小数, 最大数)
Randomize
随机数 = int((最大数 - 最小数) * rnd + 最小数) //用随机数公式生成一个随机数
End Function
//数组的复制//很简单就是数组之间可以赋值 比如 dim myarray(10)=myarray_1
//用上面的例子来演示一下
//数组的复制//很简单就是数组之间可以赋值 比如 myarra=myarray
//用上面的例子来演示一下myarra = myarray//这句的意思就是把myarray数组的所以各元素值赋给myarra变量了 同样myarra变量就等级数组了。
//myarra变量也就等于有六个随机数的数组了
TracePrint myarra(0)
冒泡算法数据排序 数组复制
最新推荐文章于 2024-11-04 09:45:00 发布