获取Java复制数组以从原始列表中获取不同的列表并进行排序

时间:2013-12-09 21:54:54

标签: java arraycopy

假设我的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); */
    }
}

2 个答案:

答案 0 :(得分:1)

在for循环中移动mynose的定义,它将被随机化。现在,它被初始化了一次,然后你就是在同一个东西上调用sort。如果你把它放在循环中,它将每次随机洗牌。

答案 1 :(得分:0)

您只创建了一个数组,每次复制时,复制原始数组,因此它会对“相同”数组进行排序。

假设您的init方法返回一个包含随机数的新数组,您应该移动该行:

int[] myNums = mynose.init();

是for方法的第一行,因此对于每次迭代,您将拥有一个包含新数字的新数组(同样,假设init正确选择了随机数)。