Java线性搜索查找数组元素时如何循环10次分别统计每次执行耗时
实现方案
修改逻辑
你只需要将原代码中单次查找+计时的代码块外层套入10次循环,即可实现每次测试单独统计耗时的需求,原有逻辑不用修改。如果要求每次测试使用独立的全新随机数组,可将随机数组生成的逻辑也移入循环内部。
修改后完整代码
import java.util.ArrayList; import java.util.Random; import java.util.Scanner; 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); // 打印数组 StringBuffer sb = new StringBuffer(); for (Object s : list) { sb.append(s); sb.append(" "); } String str = sb.toString(); System.out.println("生成的数组:\n" + str); // 循环执行10次测试 for (int round = 1; round <= 10; round++) { System.out.println("\n===== 第" + round + "次测试 ====="); // 开始计时 long startTime = System.nanoTime(); linearSearch(list, x); // 结束计时 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) { // 获取指定范围内的随机数 int randomNumber = rand.nextInt((max - min) + 1) + min; // 去重 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)); } } } }
补充说明
如果需要每次测试都使用不同的随机数组,只需要将ArrayList list = GenerateRandomIntegers(n, 0, n);以及数组打印的逻辑移入循环内部即可。
内容的提问来源于stack exchange,提问作者RaVeN
相关产品推荐
相关产品推荐

