Rubyの二分探索(dichotomous search)アルゴリズムの簡単な例
2022-01-03 08:28:52
コンピュータサイエンスにおいて、二分探索、対数探索とも呼ばれる二項探索は、順序配列の中から特定の要素を見つけ出すための探索アルゴリズムである。探索は配列の中央の要素から始まり、中央の要素がまさに見つけたい要素であれば終了し、特定の要素が中央の要素より大きいか小さい場合は、中央の要素より大きいか小さい配列の半分で探索し、比較は最初と同じく中央の要素から始めます。あるステップで配列が空であれば、見つからなかったということです。この検索アルゴリズムでは、比較のたびに検索対象が半分に絞られます。
複雑性解析
<スパン
時間の複雑さ
半分に折りたたむと、毎回探索領域が半分になり、時間複雑度は
. (nは集合の要素数)
<スパン
空間の複雑さ。
は再帰的に定義されているが、尾再帰的であり、ループとして書き換えることができる。
Rubyコード例
def binseaech(arr, i)
low, high = 0, arr.size - 1
while (low < high)
mid = (low + high)/2
if arr[mid] < i
low = mid + 1
elsif arr[mid] > i
high = mid - 1
else
return mid
end
end
end
arr = [1,3,12,34,35,46,91,108]
puts binseaech(arr, 91)
結果
6
[Finished in 0.1s]
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン