首页 > 其他 > 详细

二分查找

时间:2020-04-27 15:48:27      阅读:52      评论:0      收藏:0      [点我收藏+]

# 参考 https://www.cnblogs.com/longyunfeigu/p/9316082.html
import time

name = 666
index = 0


def x(tmp):
    global index
    length = len(tmp)
    print(index)
    if length >= 2:
        if tmp[length // 2] < name:
            index += length // 2 + 1
            return x(tmp[(length // 2 + 1):])
        elif tmp[length // 2] > name:
            return x(tmp[:length // 2])
        else:
            return index + length // 2
    else:
        print("*********")
        print(tmp)
        for i, v in enumerate(tmp):

            if v == name:
                return index + i + 1
        return 33

def binary_chop(alist, data):
    """
    非递归解决二分查找
    :param alist:
    :return:
    """
    n = len(alist)
    first = 0
    last = n - 1
    while first <= last:
        mid = (last + first) // 2
        if alist[mid] > data:
            last = mid - 1
        elif alist[mid] < data:
            first = mid + 1
        else:
            return True
    return False
if __name__ == ‘__main__‘:
    a = [x for x in range(1001)]
    _ = x(tmp=a)
    print(_)

二分查找

原文:https://www.cnblogs.com/lajiao/p/12786255.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!