首页 > 解决方案 > 在这个数组中寻找最小的数字(想了解自己解决的逻辑;不想要答案)

问题描述

我有一个数组(简单数组):

int [] array =  { 1, 2, 3, 4, 5 };

还有一个嵌套的 for 循环来查找最小的元素。

public static int smallest(int[] array){
    int answer = 0;
        
    for(int i = 0; i < array.length; i++){
        for(int j = 0 + i; j < array.length; j++){
            if(array[i] < array[j]){
                answer = i ;
            }
        }
    }
    return answer;
}

在这种情况下,我的嵌套 for 循环发现第一个遍历满足我的条件,其中 [i] 小于所有 [j] 元素。但是,我的循环继续运行,这就是我对逻辑/工作流程感到困惑的地方。在提供的数组中找到所需结果后,如何安全退出?我的条件有问题吗?太复杂了?因为无缘无故地设置 answer = i 这么多次看起来很荒谬。感谢任何输入。

标签: javaarraysloops

解决方案


由于您不想要完整的答案,因此这里有一些提示:

  1. if(array[i] < array[j]){
        answer = i ;
    }
    

    如果您考虑这个测试,它会answer根据涉及数组中两个项目的测试结果进行修改,array[i]并且array[j]. 如果两个元素都不是最小的怎么办?测试不检查那个。

    您需要以某种方式参与answer测试,以便在遍历数组时跟踪“迄今为止最小的”。

  2. 查找列表中的最小数字不需要嵌套循环。如果你用手在纸上做,你可以一次性找出答案,每个数字只看一次。您的代码应该做同样的事情:一次循环,一次通过。


推荐阅读