-2

我和我的班级正在为 Java 编写一个编程任务,测试不同排序算法的运行时间。我们生成存储不同数量的随机生成整数的文本文件。大小为:100、1000、10 000、100 000、1 000 000。我能够在这些文件上正确运行排序算法,但不知道下一步该怎么做。

我们需要创建或修改这些文本文件,因此只有 5% 的随机整数不合适。我不能只移动最后的 5%,因为它必须均匀分布。此外,他说,在“打乱”这些文件时,不应再次移动已移出位置的整数,以防止将其移回原来的位置。任何人有任何想法我会如何做到这一点?谢谢。

4

1 回答 1

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);
}

我希望这就是您所说的“5% 故障”的意思。请注意,数字可能会显示在它们原来的位置,但不会移动两次。

于 2013-04-22T21:14:45.623 回答