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)

  

原文地址:https://www.cnblogs.com/Hamge/p/10761145.html