我想知道,哪种方式对编译器来说会更快。
使用排序或循环方法显示最小值和最大值。
对于编译器或程序员来说,哪种方法更快?
我将循环方法作为注释包括在内。
import java.util.Scanner;
import java.util.Arrays;
public class Day3
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Maximum and minimum value array");
System.out.println("--------------------------------\n");
//variable declaration
int amount;
int[] integerArray;
//set amount
System.out.print("Enter the amount of numbers to sort: ");
amount = scan.nextInt();
integerArray = new int[amount];
//input loop
System.out.print("Enter numbers: ");
for(int i = 0; i < amount; i++)
{
integerArray[i] = scan.nextInt();
}
System.out.print("\nHere is your array: " + Arrays.toString(integerArray) + "\n");
Arrays.sort(integerArray);
System.out.println("Min value = " + integerArray[0]);
System.out.println("Max value = " + integerArray[integerArray.length - 1]);
System.out.println("Median value = " + integerArray[(integerArray.length -1) / 2]);
/*
int[] arr = new int[10];
Scanner in = new Scanner(System.in);
int i, min=0, max=0;
for(i=0; i<=arr.length; i++)
{
System.out.print("Enter any number: ");
arr[i] = in.nextInt();
}
min = arr[0];
for(i=0; i<=9; i++)
{
if(arr[i] > max)
{
max = arr[i];
}
if(arr[i] < min)
{
min = arr[i];
}
}
System.out.println("Maximum is: " + max);
System.out.println("Minimum is: " + min);
*/
}
}
最佳答案
对于 未分类 数据,遍历数组以找到最小值/最大值需要 O(n) 时间。对于 已排序 这将是恒定时间(O(1)),但据我了解,这不是你的情况。
最快的排序算法在 O(n*log(n)) 中工作,因此线性扫描(循环)是最快的选择。
此外,当编译器可以为您优化某些内容时,情况并非如此。
关于java - 在数组中查找最小值和最大值的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44200606/