使用线性搜索计算在数组中查找元素(数字)的时间

Compute time to find an element (number) in an array using linear Search

所以我在作业中遇到了这个问题,除了最后一部分我几乎都做了,代码工作正常。我得到的问题在下面提到。

Write a program to generate any number of random integers in 0 to 100 range. Your program should get the size as a parameter and return the numbers as an array.

Now implement the linear search. Pass the random array of 100 items as the list and “50” as the item to find. Compute the time to find 50 in the array and record the time consumed.

Conduct this test for 10 times

我想知道如何 运行 数组 10 次并计算每个循环分别找到 50 个的时间。

我在下面提到了我的代码。我的代码工作得很好,需要知道如何做最后一部分。

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Array size:\t");
        int n = sc.nextInt();
        System.out.println("Element to be found: ");
        int x = sc.nextInt();

        ArrayList list = GenerateRandomIntegers(n, 0, n);

        //printing the array
        StringBuffer sb = new StringBuffer();
        for (Object s : list) {
            sb.append(s);
            sb.append(" ");
        }
        String str = sb.toString();
        System.out.println(str);

        //start computing time
        long startTime = System.nanoTime();

        linearSearch(list, x);

        //end computing time
        long endTime = System.nanoTime();
        long timeElapsed = endTime - startTime;
        System.out.println("Execution time in nanoseconds: " + timeElapsed);
        System.out.println("Execution time in milliseconds: " + timeElapsed / 1000000);
    }


    public static ArrayList GenerateRandomIntegers(int size, int min, int max) {
        ArrayList numbers = new ArrayList();
        Random rand = new Random();

        while (numbers.size() < size) {
            //getting random numbers within range
            int randomNumber = rand.nextInt((max - min) + 1) + min;
            //check for duplicates
            if (!numbers.contains(randomNumber)) {
                numbers.add(randomNumber);
            }
        }
        return numbers;
    }

    public static void linearSearch(ArrayList arr, int target) {
        for(int i=0;i<arr.size();i++) {
            if(arr.get(i).equals(target)) {
                System.out.println("Item found at = "+(i+1));
            }
        }
    }
}

这是输出;

希望你能解决我的问题 (T^T)。只想知道如何 运行 一次执行 10 次(如循环)并分别计算每个循环的时间。

这有点模棱两可,因为它可能只是要求 运行 程序 10 次;然而更有可能的是程序 运行 一次并且搜索执行了 10 次。每次生成数组也是有道理的。

你可以把整个事情放在一个循环中...

for(int i = 0; i < 10; i++)
{
    // generate array
    // startTime
    // search
    // endTime
    // output results
}