比如 有一个数组int[] array=new int[]{2,5,4,11,33,56,78,68,98,38,0,0,0,0,0,0,,0,0,0,0,0,0,0};
请问我该如何打乱这个数组 就像“洗牌”一样 如果你要问要怎样的顺序 我的回答就是无论怎样的顺序 只要达到洗牌的效果就行了 因为我们从来不知道一个临时生成的数组顺序是怎样的
请问我该如何打乱这个数组 就像“洗牌”一样 如果你要问要怎样的顺序 我的回答就是无论怎样的顺序 只要达到洗牌的效果就行了 因为我们从来不知道一个临时生成的数组顺序是怎样的
取Ai的牌移动到 (Ai+A(i+1)) % N 位置,
应该没那么容易看出规律。
int[] replace = {3,5,20,8,11,23,9,6,42,51,98,32,12,32,5,1,10,2,3,5,7,11,13,17};
int pre = 15;
int N = array.length;
int p,q;
for (int i : replace) {
p = i % N;
q = (pre) % N;
array[p] += array[q];
array[q] = array[p] - array[q];
array[p] = array[p] - array[q];
pre = p;
}