繁体   English   中英

使用随机数和 arrays 的排序方法的时间测试问题

[英]Time testing problem for sorting methods using random numbers and arrays

我最后有时间分析代码的排序方法的工作代码,但不知道在哪里放置排序方法的随机数或数组生成器代码。 每次尝试时都会出错,希望有人可以向我展示调用随机方法而不是默认分配时的外观。 另外,计时部分做得对吗? 似乎不需要那么长时间,当我运行时,我会得到类似 69391841667800 纳秒的信息。

public class InsertSort {
private int[] arr;
public InsertSort(int[] array) {
arr = array;
}
private boolean more(int value1, int value2)
{
return value1 > value2;
}
public void sort()
{
int size = arr.length;
int temp,j;
for(int i=1; i<size; i++)
{temp=arr[i];
for(j=i; j>0 && more(arr[j-1], temp); j--)
{
arr[j]=arr[j-1];
}
arr[j]=temp;
}
}
public static void main(String[] args)
{
int[] array = {9,1,8,2,7,3,6,4,5};
InsertSort bs = new InsertSort(array);
bs.sort();
for(int i=0;i<array.length ;i++)
{
System.out.print(array[i] + " ");
}
long endTime = System.nanoTime(); //Current system Time at end

long startTime = 0;
long duration = (endTime - startTime); //divide by 1000000 to get milliseconds.

System.out.print(duration);
}
}

这是我的随机数生成器代码

import java.util.ArrayList;

public class Random {

public static void main(String[] args)
{
    System.out.println(generateRandomList(5, 1, 10));
}

public static ArrayList<Integer> generateRandomList( int size, int min, int max) {
    ArrayList<Integer> list;
    list = new ArrayList<>();
    for(int i=0;i<size;i++) {
        int n = (int)(Math.random() * (max-min))+min;
        list.add(n);
    }
    return list;
}

}

你需要更换

int[] array = {9,1,8,2,7,3,6,4,5};

在你的第一个主要方法中调用generateRandomList像这样

int[] array = Random.generateRandomList(5, 1, 10);

如果您不使用 IDE,您可能需要添加随机 class 以导入主要 class 的部分。

测量 java 代码的执行时间非常重要。 请查看以下链接以获取更多信息https://www.baeldung.com/java-microbenchmark-harness

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM