1

なぜこれが起こっているのか誰でも説明できますか?すなわち。7 番目の配列に 175 が存在する場合でも、array.binarysearch は負の値を返していますか?

この画像を見てください:

コード http://www.freeimagehosting.net/uploads/555fef4560.jpg

4

4 に答える 4

9

事前に配列をソートしましたか?BinarySearch配列がソートされていることを期待します。そうしないと、誤った結果が返される可能性があります。

>= 0また、ではなくをチェックする必要があり> 0ます。要素はインデックス 0 に存在できます。

于 2009-11-07T20:37:01.970 に答える
1

図から、配列は 220 要素であり、最初の 7 つだけを表示します。220 要素すべてを並べ替える必要があります。そうしないと、BinarySearch が失敗します。

たとえば、最初のnum要素のみを使用する場合は、BinarySearch(0, num, 175)

于 2009-11-07T20:38:24.183 に答える
0
  1. 配列がソートされていることを確認してください
  2. 検索しているオブジェクトが、配列内のオブジェクトと同じタイプであることを確認してください。汎用バージョンを使用すると役立ちます。

    Array.BinarySearch(..)

于 2009-11-07T20:38:10.860 に答える
0

タイプ固有のバージョンを使用して、配列がソートされている場合に入力パラメーターが正しいことを確認できます。

 int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
 int index = Array.BinarySearch<int>(array, 175);

入力配列または検索パラメーターが int 型でない場合、コンパイル エラーが発生します。

于 2009-11-07T20:48:08.657 に答える