Python 二分法

# coding = utf-8

import random

def Creat_Arr():
    arr = []
    for i in range(0,50) :
        arr.append(random.randint(1,100))
        i += 1
    arr.sort()   #排序
    return arr

def Select_Key():
    key = random.randint(1,100)
    return key


def BinarySearch(arr, key):
    # 記錄數組的最高位和最低位
    start = 0
    end = len(arr) - 1

    if key in arr:
        # 創建一個死循環,直到找到key
        while True:
             # 獲得中位數
             # 這裏必定要加int,防止列表是偶數的時候出現浮點數據
            center = int((start + end) / 2)
             # key在數組左邊
            if arr[center] > key:
                end = center - 1
            # key在數組右邊
            elif arr[center] < key:
                start = center + 1
            # key在數組中間
            elif arr[center] == key:
                print(str(key) + "在數組裏面的第" + str(center+1) + "個位置")
                return arr[center]
    else:
        print("沒有該數字!")

if __name__ == '__main__':
    arr = Creat_Arr()
    key = Select_Key()
    print ('生成數組 : %s'%arr)
    print('生成key : %s'%key)
    BinarySearch(arr,key)
相關文章
相關標籤/搜索