我的班级和我正在研究Java的编程任务,测试不同排序算法的运行时间。我们生成存储不同数量的随机生成的整数的文本文件。大小为:100,1000,1万,100 000,1 000 000.我能够在这些文件上正确运行排序算法,但不知道如何进行下一步。
我们需要创建或修改这些文本文件,因此只有5%的随机整数不合适。我不能只移动最后5%,因为它必须均匀分布。此外,他说当“混乱”这些文件时,不应再移动已移动到位的整数,以防止它被移回原处。任何人有任何想法我会怎么做?感谢。
答案 0 :(得分:0)
List<Integer> numbers = new ArrayList<Integer>();
int n = 100;
for (int i=0; i<n; i++) {
numbers.add(i);
}
//The array is now 1, 2, 3, ..., 99, 100. Critically, it is sorted.
List<Integer> disordered = new ArrayList<Integer>();
for (int i=0; i<n; i++) {
if (Math.random() < 0.05) {
// 5% chance of taking a number from numbers and adding it to disordered
numbers.remove(i);
disordered.add(i);
}
}
while (!disordered.isEmpty()) {
int x = disordered.remove(0); // Pick a number from disordered
int position = Math.random()*numbers.size(); // Generate a random number in the domain of numbers
numbers.add(position, x);
}
我希望这就是你的意思&#34; 5%无序。&#34;请注意,数字可能会显示在原来的位置,但没有数字会被移动两次。