在我的主要方法(包括下面)中,我运行冒泡排序以对包含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)
答案 0 :(得分:0)
计算最小值和最大值非常简单 - 只需使用两个辅助变量,一个用于最小值,一个用于最大值,并在每次测量的新时间更新它们。
计算平均值只是稍微难一点 - 你需要辅助变量,但这次你需要两个。计算您在第一个测量中完成的测量次数,并将累计时间存储在第二个测量中。然后计算平均值将累计时间简单地除以测量次数。