何が悪いのか見てみましょう。
if (i[0] <= i[b])
これは、あなたのコードで私を悩ませている主な領域です。次の値が低い/高いかどうかをどのように確認していますか?i[b]
インデックス 0 の値とインデックス b のみを比較しています!
基本的に、コードはループで次のようになります。
/週int i[] = { 1, 2, 3, 4, 5 };
i[0] i[b]
1 1
1 2
1 3
...
あなたは絵を正しく理解していますか?本当に必要なのは、次の値を確認することですb.
コードは次のようになりますi[b] > i[b+1]
isOrdered
正直なところ、 true と falseの順序をどのように初期化したかで、おそらく機能させることができます。最初に true に初期化します。次に、質問に誤りが見つかった場合に、実行中のプロセスから抜け出すというアイデアfalse.
です。
反復
boolean isOrdered = true;
while(isOrdered && array.length - 1 > b){
if(array[b] > array[b+1]) isOrdered = false;
b++;
}
再帰的な
boolean isOrdered(int[] array, index){
if(index == array.length - 1) return true;
if(array[index] > array[index + 1]) return false;
return isOrdered(array, index + 1);
}
このための再帰的な方法は、waaaaaaaaaaayの方がクールです。