二分查找—python

正好工作的时候,需要知道一个数据,是否在一组数据中。刚好学习下二分查找的内容,具体的思路参照别人写的内容,这里只是复现一遍。还没有仔细研究。

二分查找:
在一段数字内,找到中间值,判断要找的值和中间值大小的比较。
如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找。
如果中间值小一些,则在中间值的右侧区域继续按照上述方式查 找。
直到找到我们希望的数字。摘自(https://www.cnblogs.com/xuehuahongmei/p/6607499.html)
#数据
dt = [i[0] for i in data_nodes]
print(dt[0:10])
[1338311645, 1338311646, 1338311667, 1338311668, 1338311717, 1338311785, 1338311817, 1338311874, 1338311909, 1926149186]
#使用二分法查找
da = dt[0:10000] #数据集
#4302893296,要查找的数据
a = 4302893296
def ef(da, a):
    da.sort()#对数据排序
    low = 0
    high = len(da) - 1
    while low < high:
        mid = int((low + high)/2)
        if a < da[mid]:
            high = mid - 1
        elif a > da[mid]:
            low = mid + 1
        else:
            return mid    

ef(da, 4302893296)
8882#返回mid
    
da[8882]#测试结果
4302893296

有待继续研究...

猜你喜欢

转载自blog.csdn.net/weixin_41512727/article/details/80606019