私はJavaの初心者であり、配列を使うことを学んでいます。 Arrayのバイナリ検索メソッドを使用する場合、エントリが見つからない場合は負の数が返されることを理解しています。しかし、次のコードでは、9,10、および11の間、負の数値が返されています。Javaでは、バイナリ検索で配列を検索するとき、なぜこれが負の数を返しますか?
私が間違っていることを誰かが指摘できるかどうか疑問に思っていますか?ありがとう!
String [] oneToSixteen = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"};
System.out.println("Searching for 7: "+ Arrays.binarySearch(oneToSixteen, "7"));
System.out.println("Searching for 8: "+ Arrays.binarySearch(oneToSixteen, "8"));
System.out.println("Searching for 9: "+ Arrays.binarySearch(oneToSixteen, "9"));
System.out.println("Searching for 10: "+ Arrays.binarySearch(oneToSixteen, "10"));
System.out.println("Searching for 11: "+ Arrays.binarySearch(oneToSixteen, "11"));
私が手出力は以下のとおりです。
Searching for 7: 6
Searching for 8: 7
Searching for 9: -17
Searching for 10: -2
Searching for 11: -2
すべてのヘルプははるかに高く評価されるだろう。あなたの配列は、それがにソートされていないString
なくint
との配列であるため、
ストリングアレイは(binarySearchの戻り値が不定である場合に)ソートされていません。 – Corbin