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回くらい実行した。
もっとスマートな書き方があるんだろうなーと思うけど私はまあこれでいいかな。