所以我在我的作业中遇到了这个问题,除了最后一部分,我几乎完成了所有其他工作,代码运行良好。我得到的问题在下面提到。
编写程序以生成 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] 删除。
我来说两句