随机洗牌算法

1. for i:=1 to n do swap(a[i], a[random(1,n)]);  // 凑合,但不是真正随机
2. for i:=1 to n do swap(a[i], a[random(i,n)]);   // 真正的随机算法
其中,random(a,b)函数用于返回一个从a到b(包括a和b)的随机整数。


2)的时间复杂度O(n), 空间复杂度O(1);

参见:
http://hi.baidu.com/wulei407/blog/item/b6ea451b6572f9fdaf513315.html

http://hi.baidu.com/zhaolijun08/blog/item/9b4cfa944472521dd31b7043.html

你可能感兴趣的:(算法,Random)