zoukankan      html  css  js  c++  java
  • python3 二分法查找

    '''
    二分法查找
    有序列表
    掐头去尾取中间
    查找列表中xx在不在列表中,在,则返回索引值
    '''
    # lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99] #使用in判断,不使用二分法
    # n = 49
    # for i, v in enumerate(lst):
    #     if v == n:
    #         print("找到了,索引为%d" % i)
    #         break
    # else:
    #     print("没找到.")
    
    '''二分查找'''
    # lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99]
    # n = 49
    # left = 0
    # right = len(lst) - 1
    # while left <= right:
    #     mid = (left + right) // 2
    #     if n > lst[mid]:
    #         left = mid + 1
    #     elif n < lst[mid]:
    #         right = mid - 1
    #     else:
    #         print("找到了,索引为:%d" % mid)
    #         break
    # else:
    #     print("没找到.")
    
    '''使用递归调用完成二分法查找'''
    lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99]
    n = 49
    def binarySearch(lst, n, left, right):
        if left <= right:
            mid = (left + right)//2
            if n < lst[mid]:
                right = mid - 1
            elif n > lst[mid]:
                left = mid + 1
            else:
                return "找到了,索引为:%d" % mid
            return binarySearch(lst, n, left, right)
        else:
            print("没找到.")
            return -1
    
    ret = binarySearch(lst, n, 0, len(lst)-1)
    print(ret)
    
     
  • 相关阅读:
    6 原型模式
    10 观察者模式
    4 代理模式
    写错误日志
    C#事件的使用
    将int型数字转换成7位字符串,不足的时候,前面补0
    Excel 2010导数据到SQL SERVER 2008
    jquery checkbox
    修改注册表开启IE跨域访问功能
    存储过程一例
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10782946.html
Copyright © 2011-2022 走看看