0

minvalue を非常に大きな数値にすることで、コードを機能させる方法を知っています。このプログラムを実行していないEclipseの背後にあるロジックを知る必要があるだけです

public static int getMinValue(int[] ary)
    {
        int Minvalue = 0;
        random(ary);
    for (int i=ary.length-1; i >=0 ;i-- )
    {
            if (ary[i]<ary[i--])
                 Minvalue=ary[i];
    }
        System.out.printf("Minvalue:%d",Minvalue);
        return Minvalue;


    }
4

3 に答える 3

1

私は単に次のようにします:

public static int getMinValue(int[] ary) {
    random(ary);
    if (ary.length > 0) {
        int minValue = ary[0];
        for (int i = 1; i < ary.length; i++) {
            if (ary[i] < minValue)
                minValue = ary[i];
        }
        System.out.printf("Minvalue:%d", minValue);
        return minValue;
    }
    throw new RuntimeException("The array must contain at least one element");
}

実装の問題は、配列の要素を、既に読み取った値の間の最小値を含むminValue変数と比較する必要があることです。for-statementまたi--、 のガード評価を変更することを使用しますfor-statement。もう1つ注意すべきことは、少なくとも私にとっては、「減少」するfor-loopよりも「増加」する方が自然であるということです...0ary.length

于 2013-11-06T17:41:17.220 に答える
0

1) Arrays.sort(ary) または Bubble Sort 、quicksort などのカスタム ソート アルゴリズムを使用して、 int 配列をソートする必要があります。

2) 最小値または ary[ary.length-1] または最大値の最初のインデックス ary[0] にアクセスするよりも

それでおしまい。

public static int getMinValue (int[] ary) throws Exception 
{
    int Minvalue = 0;

    if (ary.length > 0 )
    {
     Arrays.sort(ary);

     Minvalue = ary[0];

     return Minvalue;
    }
    else
    {
        throw new Exception ("Empty array");
    }


}//end method
于 2013-11-06T17:33:57.147 に答える
-2

チェックする場所の前のインデックス位置で発生する配列内の値のみをチェックするため、機能していません。

最小値を見つけたい場合は、配列内のすべての可能な値を確認する必要があります。

for (int i=ary.length-1; i >=0 ;i-- )
{
    Boolean flag = false; //this stays false in the case of lowest min value
    for (int z=ary.length-1; z>=0; z--)
        if (ary[i]>ary[z]) 
             flag = true; //flag is true if any array value is greater than current

    if(!flag)
    {
        minValue = ary[I];
        break; //just to avoid useless checks
    }
}
于 2013-11-06T17:25:11.757 に答える