Pythonでバイナリーサーチ

2019-04-15に投稿

days 005

from random import randrange  
from time import time  
# 関数 binary_search の中を作成してください  
def binary_search(numbers, target_number):  
    count = 0  
    min_index = 0  
    max_index = len(numbers)  
    start_time = time()  
    while True:  
        count += 1  
        mid_index = (max_index + min_index) // 2  
        if numbers[mid_index] == target_number:  
            print("探索範囲は%dから%d" %(numbers[0], numbers[-1]))  
            print("{}は{}番目にあります".format(target_number, mid_index))  
            print("探索回数: %d" % count)  
            print("探索時間: %.5f" % (time() - start_time))  
            break  
        elif numbers[mid_index] > target_number:  
            max_index = mid_index - 1  
        else:  
            min_index = mid_index + 1  
# 探索するデータ  
min = randrange(0, 99999)  
numbers = range(min, min + randrange(0, 9999999999))  
# 探索したい値  
target_number = randint (min, min + len(numbers))  
# バイナリーサーチの実行  
binary_search(numbers, target_number)  

このログへのコメント

コメントはありません
このエントリーをはてなブックマークに追加