3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arrays#binarySearchを使うときに注意したいこと

Posted at

Java Collections FrameworkにあるArrays#binarySearch はこんな感じに使います。

int result = Arrays.binarySearch(検索対象配列, 検索キー);

resultに見つかった要素のインデックスが入ります。

このメソッドを使う際に注意しておきたいことです。

(1) 検索対象配列をソートしておく

二分探索なので、ソートしておかないと結果がどうなるかはわかりません。
たまたま期待した結果になるかもしれませんし、ならないかもしれません。

(2) 見つかったかどうかだけ知りたいときは>=0で比較する

Arrays#binarySearch は、検索キーが見つかった配列内要素のインデックスが返ります。

検索キーが見つからないときは、-(配列のサイズ+1)~-1の範囲の値が返ります。

(3) 検索対象配列に重複する値があると結果は不定

先頭要素のインデックスが返ってきて欲しい気もしますが、二分探索なのでどうなるかはわかりません。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?