平时喜欢打牌玩玩
简述如下:
1, 初始化数组array,数组长度为54;
2, 初始长度为: l = 54;
3, i = 0;
4, 第i次,在范围 ( 0 到 l - 1) 内生成随机数 r;
5, array[r]和array[l-1]交换;
6, i++, l--, 直到 l = 0;
7, 重复第(4),(5),(6)步;
8, array[54]便是打散的扑克牌;
随便写写(js
) :
// 模拟初始化扑克牌数组
var arr=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
console.log(arr);
var l = arr.length;
var genRandom = function(max){
return Math.floor(Math.random() * max);
};
for(var j = 0; j < l; j++){
var tmpKey= genRandom(l - j - 1);
var tmpValue = arr[tmpKey];
arr[tmpKey] = arr[l - 1];
arr[l - 1] = tmpValue;
}
console.log(arr);
/**
* 结果:
* node card.js
* [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ]
* [ 'j', 'e', 'a', 'd', 'c', 'f', 'g', 'h', 'i', 'b' ]
*/
虽然很简单,但是有其亮点,至少只用到了一个数组(指针与数组),而且取值比较方便。其实不需要用到什么链表啊之类的数据结构,而且,用链表对性能消耗比较大(查询和插入等)