2分探索
2分探索の練習をします。
重複のないリストの中で、indexの値と数値が等しいものを探します。
例えば、[-13, -2, 0, 3, 5, 10, 12]というリストであれば3、[0, 5, 8, 11, 15, 12]というリストであれば0、[-9, -5, 2, 3, 8, 9]というリストであればNoneが答えになります。
def find_value_equals_index(given_list): imin = 0 imax = len(given_list) - 1 while imin <= imax: imid = (imin + imax) // 2 if given_list[imid] < imid: imin = imid + 1 elif given_list[imid] > imid: imax = imid - 1 else: return given_list[imid] return None