美文网首页
使用python编写二分排序

使用python编写二分排序

作者: dwq1666666 | 来源:发表于2019-12-14 11:31 被阅读0次
#  二分查找,前提是数据是有序的数列


def search(list_data, search_num):
    # 搜索开始位置
    start = 0
    end = len(list_data) - 1
    ret_index = -1  # 未找到就是-1
    search_cnt = 0  # 查找的次数

    while True:
        # 当左侧比右侧小说明没有找到结果直接返回
        if start > end:
            break

        mid = (start + end) // 2  # 取到中间位
        mid_data = list_data[mid]

        # 相等表示找到了,直接返回位置
        if search_num == mid_data:
            ret_index = mid
            break

        # 比中间数大表示在右侧
        elif search_num > mid_data:
            start = mid + 1

        # 比中间数小说明在左侧
        else:
            end = mid - 1

        search_cnt += 1
    return ret_index, search_cnt


if __name__ == '__main__':
    search_value = int(input('请输入你要查找的数字: '))
    data = [1, 2, 3, 4, 5]
    ret, cnt = search(data, int(search_value))
    if ret == -1:
        print('没有在数列里面所需要的值')
    else:
        print('需要查找的数位置在:{},查找的次数为{}'.format(ret, cnt))

相关文章

网友评论

      本文标题:使用python编写二分排序

      本文链接:https://www.haomeiwen.com/subject/yxecnctx.html