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
转载自:http://blog.csdn.net/zdl1016/archive/2009/09/12/4546954.aspx