重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

def b_srch2(key):
min = 0
max = len(a)-1
while min <= max:
mid = int((min+max)/2)
if a[mid]>key:
max = mid-1
if a[mid]<=key:
min = mid+1

if max>=0 and a[max]==key:
return max
else:
return -min-1

教科書に二分探索法の例が上のように載っていたのですが、
各行でどのような処理が行われているかイメージができません。各行で行われている処理をできるだけ詳しく教えてくれると助かります。

A 回答 (1件)

うん、こりゃダメだ。


Pythonはインデント付けないと読めないんで、ideone

https://ideone.com/

辺りにコード貼ってリンク貼ってくれた方が良いかな。

あと、例えばaが何表すのか全然明らかじゃないし、あと、Pythonコードとしては「組み込み関数名」である、maxとかminを変数名として使ってたり、良いPythonコードたぁ言えないですね。

まあ、いずれにせよ、(多分)ソート済のリストaに対して、真ん中で二分して、keyを探して、また二分して・・・・ってやっていくんで「二分」探索、っつー、そのまんまの名前なわけですけど。
    • good
    • 0
この回答へのお礼

たしかに全く意味が分かりませんね。。すいませんでした

お礼日時:2020/11/12 19:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!