vb中一维二维数组应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所以,需要两层循环:外层循环i执行n-1次,内层循环j执行n-i次 For i=1 to n-1 For j=n to i+1 step -1 若第j项值<第j-1项值,则: tmp=第j-1项值 第j-1项值=第j项 第j项值= tmp next Next 大数下沉排序过程:从第1项到第k项,依次相临两项比较,若第m项大于第m+1项,则两项 交换。(k从n-1到1) For i=n to 2 step -1 For j=1 to i-1 若第j项值>第j+1项值,则: tmp=第j+1项值 第j+1项值=第j项 第j项值= tmp
1、 找到:该数在数组中下标为k,则从第k+1项到第n项开始,依次向前移动,即第k+1 项移动到第k项,第k+2项移动到第k+1项,……,第n项移动到第n-1项。
二维数组的应用:矩阵 一、 两重循环 Dim a(1 to 4,1 to 4) as integer ‘4*4矩阵,其值由行*10+列值组成 For i=1 to 4 For j=1 to 4 生成矩阵并显示(以4*4矩阵为例)
For i=1 to 4 For j=1 to 4 print a(j,i); next print next ‘输出一行后换行
2、
将数组改为转置后的形式
For i=1 to 4 For j=1 to i-1 tmp= a(j,i) a(j,i)=a(i,j) a(i,j)=tmp next next 四、 For i=1 to 4 If i=1 then p=3 Elseif i=3 then p=1 else p=i end if For j=1 to 4 print a(p,j); next print next ‘输出一行后换行 行互换(如1行和3行在输出时互换)在数组中互换呢?
一、 For i=1 to 4
列互换(如2列和4列在输出时互换) 在数组中互换呢?
For j=1 to 4
If j=2 then p=4 Elseif j=4 then p=2 else p=j end if print a(i,p); next print next ‘输出一行后换行
数据已经放在一维数组中,要求从小到大排序。
数组 20 4 36 …… 45 109 3 下标 1 2 3 …… n-2 n-1 n
两种方法:小数上浮和大数下沉。 小数上浮排序过程:从第n项到第k项,依次相临两项比较,若第m项小于第m-1项,则两项 交换。(k从2到n) 第1次执行:结果是第1项至第n项中的最小值放到第1项中 1、 2、 若第n项小于第n-1项,将第n项与第n-1项交换。 若第n-1项小于第n-2项,将第n-1项与第n-2项交换。
3、 4、
…… 若第2项小于第1项,将第2项与第1项交换。
第2次执行:结果是第2项至第n项中的最小值放到第2项中 1、 2、 3、 4、 …… 第n-1次执行: 1、 若第n项小于第n-1项,将第n项与第n-1项交换。 若第n项小于第n-1项,将第n项与第n-1项交换。 若第n-1项小于第n-2项,将第n-1项与第n-2项交换。 …… 若第3项小于第2项,将第3项与第2项交换。
Case n bool = False End Select Loop If bool then 未找到
插入 一般指有序序列插入 方法: 1、 查找:查找比待插入的数大的数(最接近的)
2、 插入:若找到的数的下标为k,则从第n项到第k项开始,依次向后移动,即第n项移 动到第n+1项,第n-1项移动到第n项,……,第k项移动到第k+1项,然后在第k项放入插入 的数。 删除 方法一:删除第k项 从第k+1项到第n项开始,依次向前移动,即第k+1项移动到第k项,第k+2项移动到第k+1 项,……,第n项移动到第n-1项。 方法二:删除=N的值 1、 查找:查找=N的数
3、 若查找的是47,则接着在(6,6)之间查找,比较第(6+6)\2项,即第6项,然后在 (7,6)之间比较,因区间左大于右,所以查找结束。 程序代码(b数组为从小到大排序): Dim i As Integer, j As Integer, tmp As Integer, bool As Boolean, n As Integer Rem i,j 查找的下标区间,tmp为区间的中间下标,n为待查找的数。 bool = True i = 1: j = UBound(b) Do While i <= j And bool tmp = (i + j) \ 2 Select Case b(tmp) Case Is > n j = tmp - 1 Case Is < n i = tmp + 1
注意:最小值及下标由临时变量存储。 所以,需要两层循环:外层循环i执行n-1次,内层循环j执行n-i-1次 For i=1 to n-1 最小值及下标由临时变量存储 tmpVal=第i项值 tmpId=第i项下标 For j=i+1 to n
若tmpVal >第j项值,则: tmpVal=第j项值 tmpId=第j项下标 next 将第i项与最小项交换 Next 从大到小呢? 二、 冒泡排序法:
next Next 从大到小呢? 查找 一、 顺序查找法:
数据已经放在数组中
数组 20 4 36 …… 45 109 3 下标 1 2 3 …… n-2 n-1 n
查找方法:从第1项到第n项依次与待查找的数比较。 For i=1 to n 待查找的数与第i项值相等?相等则返回i值,终止循环。 next 二、 折半查找法:
一维数组 排序 一、 选择排序法:
数据已经放在一维数组中,要求从小到大排序。
数组 20 4 36 …… 45 109 3 下标 1 2 3 …… n-2 n-1 n
排序过程: 1、 2、 3、 4、 从第1项到第n项选择最小值,然后将第1项与最小项交换。 从第2项到第n项选择最小值,然后将第2项与最小项交换。 …… 从第n-1项到第n项选择最小值,然后将第n-1项与最小项交换。
a(i,j)=i*10+j print a(i,j); next print next 二、 For i=1 to 4 For j=1 to 4 If print a(i,j); else print spc(4); end if next print next 三、 1、 矩阵转置 只在输出时转置 ‘输出一行后换行 i+j=5 or i=j then 矩阵的对角线 ‘输出一行后换行
数据已经放在一维数组中,要求:数组中的数已经排序。
3 ห้องสมุดไป่ตู้ 20
36 45 109 1 2 3 4 5 6
查找方法: 与第(1+n)\2项比较,若小于该项则在下标区间(1,(1+n)\2-1)中的项之间查找,否 则在下标区间((1+n)\2+1,n)中的项之间查找。 如:在上表数组中查找45 1、 2、 比较第(1+6)\2项,即第3项,45>20,则在(4,6)之间查找。 比较第(4+6)\2项,即第5项,则找到。