找到最小数字的索引

时间:2013-12-02 15:47:20

标签: java methods

它返回数组中的第二个元素而不是最小数字的索引
我已经采用了大小和所有这些东西,这只是方法

public static int FindSmallest (int [] arr1){//start method

    int index = arr1[0];

    for (int i=1; i<arr1.length; i++){

        if (arr1[i] > index ){
            index = arr1[i];
        }

        return index ;
    }

    return 0;

}//end method

4 个答案:

答案 0 :(得分:7)

你会在纸上做什么?

  1. 使用数组的第一个元素
  2. 初始化最小值
  3. 将相应的索引初始化为0(数组为0基索引)
  4. 在数组中循环
  5. 如果您发现的数字小于最小值,请使用找到的值
  6. 更新最小值
  7. 如果满足4,则使用当前索引更新相应的索引
  8. 返回索引
  9. 你已经完成了。

答案 1 :(得分:2)

public static int FindSmallest (int [] arr1) {
       int index = 0;
       int min = arr1[index];

       for (int i=1; i<arr1.length; i++) {
           ...

           if (arr1[i] < min) {
               min = arr1[i];
               index = i;
           }
           ...
       }
       return index;
}

答案 2 :(得分:0)

Algorithm FindSmallest (arr1[])
// This Algorithm returns the index of smallest element in the array arr1
// Assumption : index of arr1 starts from 0
//              arr1.length returns the length of arr1
begin
   set index := 0;
   set len   := arr1.length;
   set min   := arr1[index];
   For i:=1 to len,do
   begin
       if arr1[i] < min ,then
       begin
           min   := arr1[i];
           index := i;
       end
   end
   return index;
end

答案 3 :(得分:-1)

你的问题就是你的回归。

有几件事:

数组不应该是静态的,你应该将它作为参数传递给arrayMin方法; min应该是一个本地arrayMin变量,而不是静态的; min应初始化为Integer.MAX_VALUE。如果用1初始化它,并且2恰好是数组的最小值,那么你永远不会返回它; 您不能从方法多次返回。一旦你返回min,方法就结束了。变量min可能存在一些混淆,将返回第一个i元素短语中的最小数字。这可能意味着在每次迭代中,变量min将具有(不返回)来自前i个元素的最小数字。

这是一个重构:

public static int arrayMin(int[] arr1) {
        int i = 0;
        int min = Integer.MAX_VALUE;
        if (arr1 == null) {
            return 0; // What if 0 is the minimum value? What do you want to do in this case?
        } else {
            while (i < arr1.length) {
                if (arr1[i] < min) {
                  min = arr1[i];
                }
                i++;
            }
        }
        return min;
    }