电脑爱好者之家

JavaScript(洗牌算法)随机打乱数组元素的位置

时间:2012-10-22 22:44来源:未知 作者:熊猫蜀黍 点击:
[javascript] view plain copy print ? function mess(arr){ var _floor=Math.floor,_random=Math.random, len=arr.length,i,j,arri, n=_floor(len/2)+1; while (n--){ i=_floor(_random()*len); j=_floor(_random()*len); if (i!==j){ arri=arr[i]; arr[i]=
 
[javascript] view plaincopyprint?
  1. function mess(arr){  
  2.     var _floor = Math.floor, _random = Math.random,  
  3.         len = arr.length, i, j, arri,  
  4.         n = _floor(len/2)+1;  
  5.     while( n-- ){  
  6.         i = _floor(_random()*len);  
  7.         j = _floor(_random()*len);  
  8.         if( i!==j ){  
  9.             arri = arr[i];  
  10.             arr[i] = arr[j];  
  11.             arr[j] = arri;  
  12.         }  
  13.     }  
  14.     return arr;  
  15. }  
  16. var testa = [1, 2, 3, 4, 5, 6, 7];  
  17. mess(testa);  
  18. console.log(testa);  

要注意一点的是,这是改变原数组的,不想改变原数组的话请先拷贝原数组:

 

[javascript] view plaincopyprint?
  1. var testa = [1, 2, 3, 4, 5, 6, 7];  
  2. var newarr = mess( testa.slice(0) ); //这里只是浅拷贝数组   
  3. console.log(testa);  
  4. console.log(newarr);  
这个洗牌函数算好么?

 

接文章第二部分:JavaScript洗牌算法二

(责任编辑:熊猫蜀黍)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片