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

掠夺

所以我在我的作业中遇到了这个问题,除了最后一部分,我几乎完成了所有其他工作,代码运行良好。我得到的问题在下面提到。

编写程序以生成 0 到 100 范围内的任意数量的随机整数。您的程序应该获取大小作为参数并将数字作为数组返回。

现在实现线性搜索。将 100 个项目的随机数组作为列表传递,将“50”作为要查找的项目。计算在数组中找到 50 的时间并记录消耗的时间。

进行此测试 10 次

我想知道如何将数组运行 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
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章