public class Arrays {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arrays[][] = {
{3,4,6,8,6,8},
{5,3,4,9,9,4},
};
for (int i = 0; i< arrays.length;i++){
for (int j =0; j<arrays[i].length; j++){
int i1 = (int)(Math.random()*arrays.length);
int j1 = (int)(Math.random()*arrays[i].length);
int temp = arrays[i][j];
arrays[i][j] = arrays[i1][j1];
arrays[i1][j1] = temp;
}
}
System.out.println(arrays);
}
}
为什么不能打乱顺序?
我运行了下下,输入结果打乱了的样
每次的运行结果都不一
9 8 6 8 3 4
6 5 3 4 4 9
如
5 4 8 4 9 8
3 4 6 9 6 3
谁可以告诉我一下,谢谢
下个断点,看下i1 j1是多少
这个就可以打乱顺序了啊 ~~~~
你那个是产生随机数 进行互换啊
假如你的数组String[] s={A,B.C.D.E.F}声明一个相同的长度的boolean数组
while(){
选取数组s一个随机的位子 ,判断相同位子的boolean的值如果是true就重新循环
如果是false并且把boolean数组中的相同位子的值置为true, 挑选出来放在新的数组中
}
代码自己写没什么用的算法。。。。
顺便说一句你这是冒泡算法 排序用的
为什么要纠结没什么实际意义的东西,这就像小学的奥数!!真的没什么卵用
首先,你那个程序从二维数组里的第一个数值开始和随机在本数组中选个数互换,确实打乱顺序了,将该二维里的所有数都调了顺序,。但是,如果说你只想将二维数组中的第一个一维的,第二个一维的,(姑且这么看),不交叉的打乱顺序,那就不要设置i1变量,直接用i就行。
public class TestArray {
public static void main(String[] args) {
int arrays[][] = { { 1,2,3,4,5}, { 5, 3, 4, 9, 9, 4 }};
for(int i = 0; i < arrays.length; i++) {
int [] temp = arrays[i];
int [] index = getIndex(temp.length);//重新编排下标
int []newSrc = new int[index.length];//根据下标得到新的数组
for (int j = 0; j < index.length; j++) {
newSrc[j] = temp[index[j]];//赋值
}
arrays[i] = newSrc;//重新指向原数组
}
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
System.out.print(arrays[i][j]+"\t");
}
System.out.println();
}
}
/**
* 随机取下标
* @param num 数组的长度
* @return 原下标的重新随机编排
*/
public static int [] getIndex(int num) {
Random rand = new Random();
int r[] = new int[num];
for (int i = 0; i < num; i++) {
r[i] = rand.nextInt(num);
for (int a = 0; a < i; a++) {
if (i == 0) {
break;
}
if (r[i] == r[a]) {
i--;
break;
}
}
}
return r;
}
}
数组是可以打乱顺序的。
主要是你给数组的下标设置了随机数,帮你稍微改了一下,看一下运行效果:
public class Arrays{
int arrays[][] = {{3,4,6,8,6,8},{5,3,4,9,9,4}};
//打乱前
System.out.println("打乱前:");
for (int i = 0; i< arrays[0].length;i++){
System.out.print(arrays[0][i]+" ");
}
System.out.println();
for (int j =0; j<arrays[1].length; j++){
System.out.print(arrays[1][j]+" ");
}
System.out.println();
for (int i = 0; i< arrays.length;i++){
for (int j =0; j<arrays[i].length; j++){
int i1 = (int)(Math.random()*arrays.length);
int j1 = (int)(Math.random()*arrays[i].length);
int temp = arrays[i][j];
arrays[i][j] = arrays[i1][j1];
arrays[i1][j1] = temp;
}
}
//打乱后
System.out.println("打乱后:");
for (int i = 0; i< arrays[0].length;i++){
System.out.print(arrays[0][i]+" ");
}
System.out.println();
for (int j =0; j<arrays[1].length; j++){
System.out.print(arrays[1][j]+" ");
}
}
运行结果:
打乱前:
3 4 6 8 6 8
5 3 4 9 9 4
打乱后:
6 4 3 8 4 3
4 9 5 8 9 6