冒泡算法数据排序 数组复制

这篇博客详细介绍了冒泡排序算法的实现过程,通过示例解释了如何使用VB进行数据排序。博主首先声明并填充了一个随机数数组,然后通过冒泡排序将数组元素从小到大排列。此外,博客还提及了数组复制的方法,即直接赋值来完成数组之间的复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//冒泡算法
//数据排序 


//首先得先声明一个数据  我们用随机数的方式生成一个数据, 然后利用冒泡算法给数组排序
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)   
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值