在多个阵列上排序方法的运行时间

时间:2010-11-06 02:10:41

标签: sorting performance quicksort mergesort insertion-sort

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

我正在使用以下方法查找每个

的运行时间
long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

以下为随机数arrary

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个数组而不只是一个,并计算每个数组的时间?例如。运行1 - 23ms; Run2 - 25ms; ...运行100 - 22ms

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
}

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