今天在论坛上看到洗牌算法,觉得有些意思,揣摩一番
总结如下:从数组的数中随机取出一个和最后一个元素交换,再从前面N-1个数中随机取一个和倒数第二个交换…这样可以达到和前面算法相同的效果而且存储空间也得到了节省,很不错的算法了。
public static int[] xiPai(int buf[]) {
Random random = new Random();
random.setSeed(new Date().getTime());
int times = 53;
while (times != 0) {
int one = random.nextInt(54);
System.out.println("!!!!!!!!!!!!!!!!!!");
System.out.println(one);
// swap(buf[one], buf[times]); // 交换元素
int temp = buf[one];
buf[one] = buf[times];
buf[times] = temp;
times--;
}
return buf;
}