Python算法之二分法01

Python算法之二分法01

问题:使用二分法的方式在列表中寻找指定的数据

代码:

'''
    使用二分法在有序列表中找出指定的值
'''


def BinarySearch(arr, key):
    # 记录数组的最高位和最低位
    min = 0
    max = len(arr) - 1
    if key in arr:
        # 建立一个死循环,知道找到key
        while True:
            # 得到中位数
            center = int((min + max) / 2)
            # key在数组左边
            if arr[center] > key:
                max = center - 1
            # key在数组右边
            elif arr[center] < key:
                min=center+1
            #key在数组中间
            elif arr[center]==key:
                print(str(key) + '在数组里面的第' + str(center) + '个位置')
                return arr[center]
    else:
        print('没有该数字!')


if __name__ == '__main__':
    arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
    while True:
        key = input('请输入你要查找的数字:')
        if key == ' ':
            print('谢谢使用!')
            break
        else:
            BinarySearch(arr, int(key))

运行结果:

请输入你要查找的数字:63
63在数组里面的第8个位置
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章