2010-11-06 94 views
0

我有各种排序方法,它们都排序相同的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; ... Run100 - 22ms

编辑: 我有一件最后的事情要做。 因此,每次迭代都用几种方法对数组进行排序,比如说插入,合并和快速排序。 所以说插入= 300ms,合并= 200ms,快速= 100ms。我需要为每次迭代找到哪种方法排序最快。

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

+0

把你的代码放在一个循环中? – AbdullahC 2010-11-06 02:16:45

+0

这是一般想法,但如果我知道如何完全实现它,我不会在这里发布! – 2010-11-06 02:18:33

回答

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

+0

完美,这就是我刚刚完成的。 – 2010-11-06 03:21:18

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 
} 

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

+0

它被克隆,以便所有其他方法都排序相同的数组。我有多个不只是插入。合并,堆,外壳等。 – 2010-11-06 02:22:06