VB编程 将一维数组中10个元素向左循环移n位 怎么改

 我来答
cd68001
2013-05-01 · TA获得超过4229个赞
知道小有建树答主
回答量:976
采纳率:66%
帮助的人:352万
展开全部
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

这个函数(过程)的优点是可读性比较好,但缺点是效率较低,希望能理解这里的意思,根据实际具体情况改进一下,让它只循环一次即可获得最终结果。
听不清啊
高粉答主

推荐于2016-01-26 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FanyongYin
2013-05-02 · TA获得超过1054个赞
知道小有建树答主
回答量:1298
采纳率:100%
帮助的人:1015万
展开全部
循环移位的关键要素,首先就是将循环的次数n模掉数组的长度,即:求出真实的循环移位的次数为:n Mod (UBound - LBound + 1),减少无用功!

然后一个O(n)循环搞定就是了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式