好きをブチ抜く

「好き」をブチ抜く

本、映画、科学、哲学、心理、すごい人の考え方など。あらゆる情報を編集したい。

リスト探索をpythonで

線形探索

配列から要素を探索するアルゴリズム
左端から順に、目的数と比較していく。

def liner_search(aList, val):
    for x in aList:
        if x == val:
            return True
    return False

2分探索

整列された配列から要素を探索するアルゴリズム
配列の中心から目的数と比較。大小関係により、いらない側を調べなくて済む。
探索する数を半分ずつ減らしていくことで効率が上がる。

def binary_search(list, item):
    low = 0
    high = len(list) - 1
    while low <= high:
        mid = (low + high ) // 2 #midの更新するってとこがポイント
        if list[mid] == item:
            print('Found')
            return mid
        if list[mid] > item:
            high = mid - 1 #midより右側もういらん
        else:
            low = mid + 1 #midより左側もういらん
    return None