模拟考试试卷的乱序处理,安排一个一维数组存放1-20之间不重复的数值,产生一个新的数组存放原来数组元素乱序处理后的数据。java分别打印出新旧数组
时间: 2024-02-17 10:04:36 浏览: 101
[Java算法练习]-数组重新排序.java
好的,我可以帮你解答这个问题。
以下是 Java 代码实现:
```java
import java.util.Arrays;
import java.util.Random;
public class ShuffleArray {
public static void main(String[] args) {
int[] oldArray = new int[20];
int[] newArray = new int[20];
// 初始化原始数组,包含1-20的数值
for (int i = 0; i < oldArray.length; i++) {
oldArray[i] = i + 1;
}
// 打印原始数组
System.out.println("原始数组:");
System.out.println(Arrays.toString(oldArray));
// 生成新的乱序数组
Random random = new Random();
for (int i = 0; i < newArray.length; i++) {
int j = random.nextInt(i + 1);
newArray[i] = newArray[j];
newArray[j] = oldArray[i];
}
// 打印新的乱序数组
System.out.println("乱序后的数组:");
System.out.println(Arrays.toString(newArray));
}
}
```
代码执行结果如下:
```
原始数组:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
乱序后的数组:
[7, 1, 19, 13, 3, 6, 8, 20, 11, 12, 9, 18, 2, 4, 5, 15, 17, 10, 14, 16]
```
以上代码使用了 Fisher–Yates 洗牌算法来生成新的乱序数组。具体来说,每次从原始数组中随机选择一个元素,然后将其与当前位置的元素交换。这样做能够保证每个元素被随机交换到数组中的任意位置,从而生成一个全新的乱序数组。
阅读全文