我有各种分类方法,这些方法都在对相同的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());

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

编辑:我有最后一件事要做。因此,每个迭代都分类了几种方式,可以说插入,合并和快速排序。因此,表示插入= 300ms,合并= 200ms,快速= 100ms。对于每次迭代,我需要找到哪种方法对最快进行排序。

我知道这是一个简单的最小/最大类型的事情,您在较低的编程课程中进行了一千次。将每个值扔进数组并使用数组.min调用会更容易吗? (无论实际是什么,java语法新的。)

有帮助吗?

解决方案

当前,看起来您正在创建数组,然后使用不同的函数反复进行分类。

您只需要将所有这些都放在循环中即可。

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 在打印结果时。

其他提示

您可能会做类似的事情:

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
}

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top