假设我的RandomArray类和插入排序代码有效,因为它们都可以。我似乎遇到的问题是,在此代码中,相同的列表不断被排序。我正在尝试创建原始数组(myNums)的副本并将内容复制到名为copy的数组中,然后进行排序。但是正如我所说,它似乎在不断地对同一阵列进行排序。
这是我的代码。大多数评论都可以忽略。
public static void main(String[] args){
int i;
// Gen Array
RandomArray mynose = new RandomArray(10);
int[] myNums = mynose.init();
/* FileInputArray myInputMaker = new FileInputArray();
int[] myNums = myInputMaker.getNumbers(args[0]); */
// For repeats = 1...5
int[] copy = new int[10];
long execution_time = 0;
for (int o = 1; o < 100; o += 1) {
System.arraycopy(myNums, 0, copy, 0, 10);
long start_time = System.nanoTime ();
insertion_srt(copy, copy.length);
execution_time += System.nanoTime () - start_time;
System.out.println(o + "," + (int)execution_time/100.0);
/* FileOutput toFile = new FileOutput();
myNums = toFile.writeToFile(copy); */
}
}
答案 0 :(得分:1)
在for循环中移动mynose的定义,它将被随机化。现在,它被初始化了一次,然后你就是在同一个东西上调用sort。如果你把它放在循环中,它将每次随机洗牌。
答案 1 :(得分:0)
您只创建了一个数组,每次复制时,复制原始数组,因此它会对“相同”数组进行排序。
假设您的init方法返回一个包含随机数的新数组,您应该移动该行:
int[] myNums = mynose.init();
是for方法的第一行,因此对于每次迭代,您将拥有一个包含新数字的新数组(同样,假设init正确选择了随机数)。