简单的洗牌方法
public int[] test(int[] a){
Random random = new Random();
int k = 0;
for(int i=a.length-1; i>1; i--) {
k = random.nextInt(i); //取小于i的随机数
//swap value
a[i] = a[i]^a[k];
a[k] = a[k]^a[i];
a[i] = a[i]^a[k];
}
return a;
}
数组旋转
public int[][] test(int[][] n){
int len = n.length;
int first = 0;
int last = 0;
int off = 0;
int top = 0;
for(int j=0; j<len/2; j++) {
first = j;
last = len - 1 - first;
for(int i=first; i<last; i++){
off = i - first;
top = n[first][i]; //保存左上角的值
//将左上角的值用左下角来赋值
n[first][i] = n[last-off][first];
//将左下角的值用右下角来赋值
n[last-off][first] = n[last][last-off];
//将右下角的值用右上角的来赋值
n[last][last-off] = n[i][last];
//将右上角的值用左上角来赋值
n[i][last] = top;
}
}
return n;
}