理系女子学生の備忘録

研究と編み物と映画のお話。

python2.7でバイナリサーチ

ちゃんとアルゴリズムのお勉強をしようと思い、基本的なサーチアルゴリズムとかソートアルゴリズムとかを実装してみることにした。
最初はバイナリサーチ
pythonのバージョンは2.7を使ってます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random

ans = random.randint(0,99)
numbers = [i for i in range(100)]
min = 0
max = len(numbers)-1

while True:
    tgt = (max + min)/2
    if tgt == ans:
        print "target:{}, answer:{}".format(tgt,ans)
        break
    elif tgt > ans:
        max = tgt
    elif tgt < ans:
        min = tgt

ansに見つけたい値を入れています。
ansは実行するたびにランダムで値が入るようになっている。
リスト内包表記とrandomモジュールが便利。
実行するたびに異なるansをちゃんと見つけてくれるのが楽しくて20回くらい実行した。
もっとスマートな書き方があるんだろうなーと思うけど私はまあこれでいいかな。