laifangsong's blog

取长补短,精益求精。 (打个广告,想做手机网站和asp/asp.net网站的可以跟我联系.QQ:25313644)
posts - 51, comments - 188, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

随机遍历数组,很巧妙的算法

Posted on 2006-09-05 09:07 laifangsong 阅读(443) 评论(1)  编辑 收藏 所属分类: 算法

这块内容是在csdn论坛 的vb版碰巧看到的,觉的算法很巧妙,就记下来了。

<%

'随机遍历数组,很巧妙的算法

Dim i
Dim a(99), bound

bound 
= UBound(a)

For i = 0 To bound
    a(i) 
= i + 1
Next

Dim x
For i = bound To 0 Step -1
    x 
= CInt(Rnd*(i+1)) '记得这里 i要加上 1
    response.write a(x) & "<br>"
    
'每次都把随机取到的数组内的某个值,用一个循环由下标从低到高依次替换;
    '这时候,随机取到的值就在当前循环中被去除了,不可能再次被随机到。
    For j = x To i-1
        a(j) 
= a(j+1)
    
Next
Next


%
>

<%
'随机遍历数组的另一种方法,但是破坏了原数组结构

Dim i, a(99), bound

bound 
= UBound(a)

For i = 0 To bound
    a(i) 
= i + 1
Next

For i = bound To 0 Step -1
    
Dim x, temp

    x 
= CInt(Rnd * (i+1))
    response.write a(x) 
& "<br>"
    
    
'把随机到的那个跟当前循环中下标最大的那个交换
    temp = a(x)
    a(x) 
= a(i)
    a(i) 
= temp
Next


%
>

Feedback

#1楼    回复  引用  查看    

2006-09-06 08:01 by メ冰枫ぱ雪      
= =+ 我郁闷。。

所谓的逆向思维吗? 汗。。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-09-08 09:30 编辑过
成果网帮您增加网站收入


相关链接: