本帖最后由 黑马连家华 于 2012-10-7 11:16 编辑
我不写代码,只要说说原理你同样能理解
1,使用Random随机取得两个不超过数组长度的两个数作为数组角标
2,交换这两个角标的对应的元素
3,让这两步循环几次
但是这样有可能得到两个一样的数,这样再交换可能没意义
有人说在真实开发中,是交换临近的两个数,这样只需要得到一个随机数
但我试过,这样的乱序效果并不明显
有点时间,我上代码吧- import java.util.Random;
- class Test
- {
- public static void main(String[] args)
- {
- int[] arr = {1,2,3,4,5,6,7,8};
- Random r = new Random();
-
- //让数组元素交换操作执行50次
- for(int x = 0;x<50;x++)
- {
- //获得两个小于数组角标长度的整数
- int indexa = r.nextInt(arr.length);
- int indexb = r.nextInt(arr.length);
-
- //交换这两个数组中的元素
- int temp = arr[indexa];
- arr[indexa] = arr[indexb];
- arr[indexb] = temp;
- }
-
- //按格式打印数组
- System.out.print("数组乱序结果 [");
- for(int x = 0;x < arr.length;x++)
- {
- System.out.print(arr[x]+ ",");
- }
- System.out.println("\b]");
-
- //如果把上面这两步操作封装成方法,使用时会更加灵活
- }
复制代码 |