在对排序算法进行基准测试时查找最小值/最大值/平均值 - Java

时间:2014-04-10 19:51:55

标签: java arrays algorithm sorting average

在我的主要方法(包括下面)中,我运行冒泡排序以对包含10,000个随机项的数组进行排序。我使用for循环对此数组进行排序总共100次。然后,我输出系统对10,000个整数的随机集合进行排序所花费的总时间。

我想简单地从这100个经过的时间输出三个数字,而不是输出100个不同的经过的排序时间:  1)使用冒泡排序(仅仅是输出的平均值)对10,000个随机整数进行排序所需的平均时间量  2)对10,000个随机整数进行排序所需的最短时间。  3)对10,000个随机整数进行排序所花费的最长时间。

任何帮助都会非常感谢大家。

这是我使用的主要方法:

public static void main(String[] args) {

    //run sorting algorithm a total of 100 times
    for (int k = 1; k<= 100; k++){
        int dataSz = 10000; //size of data set to be sorted
        int[] a = new int[dataSz]; //create array with dataSz new items
        int[] temp = new int [a.length]; //create empty temporary array with
        //same number of items as above array

        //fill the array with random integers
        for (int i=0; i<a.length; i++)
            a[i] = (int) (Math.random()*100000+1);

        //get the start time in nanoseconds
        long startTime = System.nanoTime();

        //run Bubble Sort to sort the entire array
        bubbleSort(a);

        //get the end time in nanoseconds
        long endTime = System.nanoTime();

        //calculate elapsed time in nanoseconds
        long duration = endTime - startTime;

        //print the elapsed time in seconds (nanoseconds/1 billion)
        System.out.printf("%12.8f %n", (double)duration/100000000);

以下是我运行程序后系统输出的内容。 注意我希望我的avg,min和max遵循与当前系统输出相同的语法。感谢。

run:
1.77562000 
1.54235000 
1.26343000
... continues for 100 
... total
... sorting durations
1.26230000 
1.26011000 
1.26398000 
BUILD SUCCESSFUL (total time: 13 seconds)

1 个答案:

答案 0 :(得分:0)

计算最小值和最大值非常简单 - 只需使用两个辅助变量,一个用于最小值,一个用于最大值,并在每次测量的新时间更新它们。

计算平均值只是稍微难一点 - 你需要辅助变量,但这次你需要两个。计算您在第一个测量中完成的测量次数,并将累计时间存储在第二个测量中。然后计算平均值将累计时间简单地除以测量次数。