在Java中查找不带array.sort的数组列表中的最小整数值

在Java中查找不带array.sort的数组列表中的最小整数值,java,arrays,algorithm,integer,Java,Arrays,Algorithm,Integer,如何在不更改数组顺序的情况下找到int数组中的最小值 代码段: int[] tenIntArray = new int [10]; int i, userIn; Scanner KyBdIn = new Scanner(System.in); System.out.println("Please enter 10 integer numbers "); for(i = 0; i < tenIntArray.length; i++){

如何在不更改数组顺序的情况下找到int数组中的最小值

代码段:

    int[] tenIntArray = new int [10];
    int i, userIn;

    Scanner KyBdIn = new Scanner(System.in);
    System.out.println("Please enter 10 integer numbers ");

    for(i = 0; i < tenIntArray.length; i++){
        System.out.println("Please enter integer " + i);
        userIn = KyBdIn.nextInt();
        tenIntArray[i] = userIn;
    }
int[]tenIntArray=newint[10];
inti,userIn;
扫描仪KyBdIn=新扫描仪(System.in);
System.out.println(“请输入10个整数”);
对于(i=0;i
我不知道如何在tenIntArray中找到最小的数组值并显示位置

例如,数组包含-
[50、8、2、3、1、9、8、7、54、10]

输出应显示“
数组中位置5处的最小值为1

图应有用:

然后回答你的问题,你会在纸上做什么

  • tenIntArray[0]
  • 创建一个变量来保存数组中最小值的索引,并将其初始化为0(因为我们在1.中说过在
    tenIntArray[0]
    处初始化最小值)
  • 循环遍历数组的元素
  • 如果发现某个元素低于当前最小值,请使用此元素更新最小值,并使用此元素的相应索引更新索引
  • 你完了

  • 现在编写算法应该很简单。

    数组的第一个索引是零。一个也没有

    for(i = 0; i < tenIntArray.length; i++)
    
    for(i=0;i
    所以纠正这个。 您询问的代码是:

        int small = Integer.MAX_VALUE;
        int i = 0;
        int index = 0;
        for(int j : tenIntArray){
            if(j < small){
                small = j;
                i++;
                index = i;
            }
        }
        System.out.print("The smallest value is"+small+"at position"+ index +"in array");
    
    int small=Integer.MAX\u值;
    int i=0;
    int指数=0;
    对于(int j:Tenitarray){
    if(j
    试试这个:

    //Let arr be your array of integers
    if (arr.length == 0)
        return;
    int small = arr[0];
    int index = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] < small) {
            small = arr[i];
            index = i;
        }
    }
    
    //让arr成为整数数组
    如果(arr.length==0)
    返回;
    int small=arr[0];
    int指数=0;
    对于(int i=0;i
    我提议的方法将找到
    min
    max

    public static void main(String[] args) {
        findMinMax(new int[] {10,40,50,20,69,37});
    }
    public static void findMinMax(int[] array) {
        if (array == null || array.length < 1)
            return;
        int min = array[0];
        int max = array[0];
    
        for (int i = 1; i <= array.length - 1; i++) {
            if (max < array[i]) {
                max = array[i];
            }
    
            if (min > array[i]) {
                min = array[i];
            }
        }
        System.out.println("min: " + min + "\nmax: " + max);
    }
    
    publicstaticvoidmain(字符串[]args){
    findMinMax(新的int[]{10,40,50,20,69,37});
    }
    公共静态void findMinMax(int[]数组){
    if(array==null | | array.length<1)
    返回;
    int min=数组[0];
    int max=数组[0];
    for(int i=1;i数组[i]){
    min=数组[i];
    }
    }
    System.out.println(“最小值:+min+”\n最大值:+max);
    }
    
    显然,这不是一个最优化的解决方案,但它会为您工作。它使用简单的比较来跟踪
    min
    max
    值。输出为:

    min:10
    max:69

    int[]输入={12,9,33,14,5,4};
    
        int[] input = {12,9,33,14,5,4};
    
        int max = 0;
        int index = 0;
        int indexOne = 0; 
        int min = input[0];
        for(int i = 0;i<input.length;i++)
        {
            if(max<input[i])
            {
                max = input[i];
                indexOne = i;
            }
    
            if(min>input[i])
            {
                min = input[i];
                index = i;
            }
    
        }
        System.out.println(max);
        System.out.println(indexOne);
        System.out.println(min);
        System.out.println(index);
    
    int max=0; int指数=0; int指数=0; int min=输入[0]; 对于(inti=0;i,这里是函数

    public int getIndexOfMin(ArrayList<Integer> arr){
        int minVal = arr.get(0); // take first as minVal
        int indexOfMin = -1; //returns -1 if all elements are equal
        for (int i = 0; i < arr.size(); i++) {
            //if current is less then minVal
            if(arr.get(i) < minVal ){
                minVal = arr.get(i); // put it in minVal
                indexOfMin = i; // put index of current min
            }
        }
        return indexOfMin;  
    }
    
    public int getIndexOfMin(ArrayList arr){
    int minVal=arr.get(0);//取第一个作为minVal
    int indexOfMin=-1;//如果所有元素都相等,则返回-1
    对于(int i=0;i
    使用Java8流,您可以创建一个二进制运算符,用于比较两个整数并返回其中最小的整数

    让arr是你的数组

    int[] arr = new int[]{54,234,1,45,14,54};
    int small = Arrays.stream(arr).reduce((x, y) -> x < y ? x : y).getAsInt();
    
    int[]arr=newint[]{54234,1,45,14,54};
    intsmall=Arrays.stream(arr).reduce((x,y)->x
    ouch.索引计数从0开始,而不是1。作为一个条件,您应该使用iint[]tenIntArray={1,-8,2,2,0,-15};
    ,您将把
    索引
    变量增加3倍。但这不会给您数组中最小值的正确索引。您必须跟踪当前索引,并在找到最小值时更新另一个变量(就像您对
    small
    所做的那样)。啊,我明白了。谢谢。如果我从
    int index=-1;
    开始,对吗?谢谢你的帮助:你应该在
    if
    语句之外增加
    I
    ,因为即使当前索引不是最小的,它也应该增加
    I
    ,以便跟踪当前索引。谢谢你的帮助!我可以知道吗这种方法的时间复杂度是多少?我猜是O(n)