首页 > 解决方案 > 如何在数组中获得最小值

问题描述

int[] smallest = {4,5,1,3,7};
System.out.println(getMinimum(smallest));

public static int getMinimum(int[] a){
    int min = a[0];

    for (int i = 0; i <a.length; i++){
        if(a[i] < min){
            min = a[i];
        }

    }
    return min;
}

这个(上面)有效,但这个(下面)没有:

int[] smallest = {4,5,1,3,7};
System.out.println(getMinimum(smallest));

public static int getMinimum(int[] a){
    int min = 0;

    for (int i = 0; i <a.length; i++){
        if(a[i] < min){
            min = a[i];
        }

    }
    return min;
}

我不知道为什么,在顶部示例中getMinimum返回1,但在底部示例中getMinimum返回3?两者都在做同样的事情,但一个是错的,另一个是对的?是因为我将 min 分配给 equal0吗?

标签: java

解决方案


在您的第二个示例中,您总是与 比较a[0],而不是与您当前的最小值进行比较。因此,您得到的答案将始终是数组中的最后一个数字,该数字小于a[0]在您的情况下为 3的值

a[0]如果您打算对数组进行排序,正如您的问题的标题所暗示的那样,那么您可能打算在每次更新时将最小值放入其中。这实际上不会正确地对数组进行排序,但它会让你走上正确的轨道并解决比较问题


推荐阅读