数组减少维数的问题

taochunsong 2008-11-26 06:34:50
有一个数组比较的问题,我觉得效率有点低,能不能有改进的算法
比如
for i= 1 to 1000
for j=1 to 100

if a(i)=b(j) then
表达式
end if
next
next

实际上在比较的时候,如if表达式成立的时候,b(j)这个值就不会再参加下次运算了,也就是此次b(j)这个数组就少掉一个值参加比较了

如果按照上面的算法就要比较1000×100次了。

能不能有办法改进,可以算的效率搞一点的,我想能不能把b(j)的维数减少1,被扣掉的后面的就补到前面来。
...全文
155 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdbjsh 2009-04-23
  • 打赏
  • 举报
回复
sorry 8楼的东西有点问题不是递归。代码如下

dim bj=1
for i= 1 to 1000
for j=bj to 100

if a(i)=b(j) then
表达式
bj=j
exit for
end if
next
next
这样的话,如果a和b都是排过序的数组,那么实际上只会比较1000次左右
wdbjsh 2009-04-23
  • 打赏
  • 举报
回复
另外,你的a和b两个数组的值是不是排过序的?如果两个数组的值是排过序的那么实际上只需要比较大概1000多次就可以了。不过需要用到递归,代码比较麻烦
wdbjsh 2009-04-23
  • 打赏
  • 举报
回复
忘记了asp是不是支持break了

不过你可以这样

for i= 1 to 1000
for j=1 to 100

if a(i)=b(j) then
表达式
j=101
end if
next
next
taochunsong 2009-04-22
  • 打赏
  • 举报
回复
给点答案噻
davs 2009-04-22
  • 打赏
  • 举报
回复
试试Redim Preserve 重定义多维数组,这个可以自由改变数组长度
taochunsong 2008-12-26
  • 打赏
  • 举报
回复
没有人知道么?
taochunsong 2008-11-28
  • 打赏
  • 举报
回复
这里可能有点问题了,我不是要判断这个值在a数组中有没有,而是
如果b(j,k)=a(i,1)的时候要把a(i,2)的值赋给ab(i,k)

可能我没有表述清楚.
谢谢,各位多帮忙
smartcatiboy 2008-11-27
  • 打赏
  • 举报
回复
这个算法要不得,大数组的逐一比较必须用hash,asp可以直接利用字典来做

set objDct=createobject("scripting.dictionary")
for i=1 to 1000
objDct.add a(i),a(i)
next

for i=0 to 100
if objDct.exists(b(i)) then 表达式
next

这个只要100次比较,比你快3个数量级。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧