python 二分法

原理:所谓的“二分法”是通过获取列表的中间位置后,根据中间位置来进行判断需要查找的数字的大小在左边还是右边,然后继续判断

注意:数列必须是有序数列

下面参看代码:

 def erfen(sums, key):

    start = 0
    end = len(sums)-1
    if key in sums:
        while True:
            center = int((start+end)/2)
            if sums[center] > key:
                end = center-1
            elif sums[center] < key:
                start = center+1
            elif sums[center] == key:
                print(str(key)+'在数组里面的第'+str(center)+'个位置')
                return sums[center]
    else:
        print('该数字不在列表中,请重新输入!')


if __name__ == "__main__":
    sums = [1, 6, 9, 12, 14, 16, 18, 23, 26, 28, 30, 32, 34, 36, 41, 45,
            47, 53, 56, 98]
    while True:
        key = input('请输入列表中要查找的数字:')
        if key == '':
            print('谢谢使用')
            break
        else:
            erfen(sums, int(key))

下面数运行结果:
请输入列表中要查找的数字:6
6在数组里面的第1个位置
请输入列表中要查找的数字:18
18在数组里面的第6个位置
请输入列表中要查找的数字:53
53在数组里面的第17个位置
请输入列表中要查找的数字:43
该数字不在列表中,请重新输入!
请输入列表中要查找的数字:
谢谢使用

你可能感兴趣的:(python 二分法)