VB编程 将一维数组中10个元素向左循环移n位 怎么改
3个回答
展开全部
dim vArray(0 to 100) '假如这是你要移动的数组
'调用这个函数(过程)可以循环位移n位。
private sub ArrayMLeft(byval n as long)
dim i as long, j as long
dim U as long, L as long
dim vTemp
U=ubound(vArray) 'U为数组上限
L=lbound(vArray) 'L为数组下限
for j=1 to n
vTmp=vArray(L) '记录第一个元素
for i=L to U-1
vArray(i)=vArray(i+1) '每一个单元都COPY第i+1个单元
next i
vArray(U)=vTmp '将第一个元素赋值到最后一个数组单元
next j
end sub
这个函数(过程)的优点是可读性比较好,但缺点是效率较低,希望能理解这里的意思,根据实际具体情况改进一下,让它只循环一次即可获得最终结果。
'调用这个函数(过程)可以循环位移n位。
private sub ArrayMLeft(byval n as long)
dim i as long, j as long
dim U as long, L as long
dim vTemp
U=ubound(vArray) 'U为数组上限
L=lbound(vArray) 'L为数组下限
for j=1 to n
vTmp=vArray(L) '记录第一个元素
for i=L to U-1
vArray(i)=vArray(i+1) '每一个单元都COPY第i+1个单元
next i
vArray(U)=vTmp '将第一个元素赋值到最后一个数组单元
next j
end sub
这个函数(过程)的优点是可读性比较好,但缺点是效率较低,希望能理解这里的意思,根据实际具体情况改进一下,让它只循环一次即可获得最终结果。
展开全部
Dim a(10) As Integer ‘将数组定义为全局变量
Private Sub Command1_Click()
Dim i As Integer
Dim n As Integer
For i = 0 To 9
a(i) = Int(Rnd() * 100)
Print a(i);
Next i
Print
n = InputBox("请输入N的值:")
Call Fan(0, n - 1)
Call Fan(n, 9)
Call Fan(0, 9)
For i = 0 To 9
Print a(i);
Next i
Print
End Sub
Sub Fan(i1, i2 As Integer) ‘将数组中i1到i2之间的元素反转放置
While i1 < i2
t = a(i1): a(i1) = a(i2): a(i2) = t
i1 = i1 + 1: i2 = i2 - 1
Wend
End Sub
Private Sub Command1_Click()
Dim i As Integer
Dim n As Integer
For i = 0 To 9
a(i) = Int(Rnd() * 100)
Print a(i);
Next i
n = InputBox("请输入N的值:")
Call Fan(0, n - 1)
Call Fan(n, 9)
Call Fan(0, 9)
For i = 0 To 9
Print a(i);
Next i
End Sub
Sub Fan(i1, i2 As Integer) ‘将数组中i1到i2之间的元素反转放置
While i1 < i2
t = a(i1): a(i1) = a(i2): a(i2) = t
i1 = i1 + 1: i2 = i2 - 1
Wend
End Sub
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环移位的关键要素,首先就是将循环的次数n模掉数组的长度,即:求出真实的循环移位的次数为:n Mod (UBound - LBound + 1),减少无用功!
然后一个O(n)循环搞定就是了
然后一个O(n)循环搞定就是了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询