線形リスト

ちょっと本気でプログラミングを学びたい欲求に駆られている今日この頃。
授業ではまったく興味なく、でも単位だけとってしまった「データ構造とアルゴリズム
今となって重要性を感じるので独学で勉強する。


まず手始めに線形リスト。

def Search(n, List):# リストに特定の要素が存在するか探索する関数
    for x in List:
        if x == n:
            return Position(n, List)
    return False


def Position(n, List):# 特定の要素がリストのどの位置にあるか調べる関数
    for i, x in enumerate(List):
        if x == n:
            return i

if __name__ == "__main__":
    List = []
    for i in range(50):
        List.append(i*i)

    print Search(100, List)
    print Search(-5, List)

と書いた。

E:\study>python test.py
10
False

お、うまく動いていた。
関数Searchでは、引数として与えたnがListの要素として存在するかを調べる。もし存在すればさらにリストの中のどの位置に存在するか調べる関数Positionを呼び出す。存在しなければFalseを返す。
線形探索し、見つかってからどの位置かを調べるなんていう非効率な探索をしているのはご愛嬌。
でかいリストの後ろのほうにターゲットの要素が存在していたら悲劇だな。