0

我有各种排序方法,它们都对相同的 100,000 个随机数数组进行排序。

我正在使用以下方法来查找每个的运行时

long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

以下为随机数数组

int maxSize = 100000;  // array size
   Sortarr arr, iniArr;         // reference to array
   arr = new Sortarr(maxSize);  // create the array
   iniArr = new Sortarr(maxSize);

   // insert random numbers
   Random generator = new Random();
   for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

我该如何修改它,以便我可以让它们中的每一个对 1​​00 个数组而不是一个数组进行排序,并计算每个数组的时间?例如。运行1 - 23ms;运行 2 - 25 毫秒;... 运行 100 - 22 毫秒

编辑: 我还有最后一件事要做。所以每次迭代都会以几种方式对数组进行排序,比如说插入、合并和快速排序。所以说插入 = 300 毫秒,合并 = 200 毫秒,快速 = 100 毫秒。对于每次迭代,我需要找到排序最快的方法。

我知道这是一个简单的最小/最大类型的事情,你在较低的编程课程中做了一千次。将每个值放入数组并使用 array.min 调用会更容易吗?(不管它实际上是什么,Java 语法的新手..)

4

2 回答 2

1

目前,您似乎正在创建数组,然后使用不同的函数重复排序。

您只需将所有这些放在一个循环中。

int maxRuns = 100;

int maxSize = 100000;  // array size

for (int run=0; run<maxRuns; run++) {   
    Sortarr arr, iniArr;         // reference to array
    arr = new Sortarr(maxSize);  // create the array
    iniArr = new Sortarr(maxSize);

    // insert random numbers
    Random generator = new Random();
    for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

    long insertionStart = System.currentTimeMillis();
    arr.Clone(iniArr);
    arr.insertionSort();
    long insertionFinal = System.currentTimeMillis() - insertionStart;
    /* <more code goes here> */
}

run您可以在打印结果时使用索引。

于 2010-11-06T02:54:18.007 回答
0

你可能会做类似的事情:

for (int try = 0; try < 100; try++) {
   iniArr = new Sortarr(maxSize);

   // insert random numbers
   Random generator = new Random();
   for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

   long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

   // print out the time, and/or add up the total
}

您仍然需要事先进行初始化。我想我不知道为什么数组在排序之前被克隆。您可以直接对该数组进行排序吗?

于 2010-11-06T02:19:09.933 回答