0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

二分探索法(バイナリサーチ)

Last updated at Posted at 2024-05-22

二分探索法(バイナリサーチ)とは

探索する範囲を半分に絞り込みながら探索を進めるアルゴリズム。
あらかじめ昇順か降順に整列されているデータが対象となる。

対象データ

以下のように昇順か降順に整列されているデータ

$array = [11, 13, 17, 19, 23, 29, 31];

フローチャート

image.png

解説

以下の変数を用意する
head:先頭のデータの添字
center:真ん中のデータの添字
tail:末尾のデータの添字

①真ん中の要素を選ぶ
(head + tail) / 2で求め、centerへ代入する
②真ん中と目的のデータを比較する
→データが目的のデータと一致した場合は、探索終了
→データが目的のデータと一致しない場合は③へ移る
③探索の範囲を半分に絞る
→目的のデータが真ん中のデータよりも大きい場合、変数headcenter + 1を代入して再び真ん中のデータを割り出す手順を繰り返す
→目的のデータが真ん中のデータよりも小さい場合、変数tailcenter - 1を代入して再び真ん中のデータを割り出す手順を繰り返す

目的のデータが存在しない場合

探索の範囲を半分に絞り続け、headがtailより大きくなった時点で目的のデータが存在しないみなし、処理を終了する。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?