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

    #查找一个输入的数字是否在列表里
    lst = [1,8,16,32,55,78,89,1,5,4,7,5,9,6,8,5,4,5,44,5,2,1,4,5,1]
    #普通方法

    lst=sorted(lst)
    n=int(input("输入一个数:"))
    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("你要找的数在这")
            break
    else:
        print("你要找的数不在这里")

    #递归方法一
    lst=sorted(lst)
    n=int(input("输入一个数:"))
    def func(n,lst,left,right):
        if left <=right:
          mid=(left+right)//2
          if n>lst [mid]:
                left =mid+1
          elif n<lst [mid]:
                right=mid-1
          else:
               print("你要找的数在这" )
               return True
          return func(n,lst,left,right)
        else:
            print("你要找的数不在这里")
            return False
    ret=func(n,lst,0,len(lst)-1)
    #递归方法二
    lst=sorted(lst)
    aim=int(input("请输入一个数:"))
    def search(lst,aim,start=0,end=None):
        '''
        功能:二分法查找
        :param lst: 被查找的列表
        :param aim:被查找的数字
        :param start:开始查找的位置
        :param end:结束查找的位置
        :return:如果被查找到,返回查找的位置,否则返回False
        '''
        if not end:end=len(lst)-1
        if start <= end:
            mid=start+(end-start)//2
            mid_value=lst[mid]
            if aim>mid_value:
                start=mid+1
            elif aim<mid_value:
                end=mid-1
            elif aim==mid_value:
                return mid
            ret = search(lst, aim, start, end)
            return ret
        else:
            return False
    ret=search(lst,aim)
    print(ret)
  • 相关阅读:
    手工测试
    测试理论
    MySQL常用语法
    Linux设置静态ip
    设计模式
    Shiro
    TreeSet和TreeMap
    UDP和反射
    Linux归纳
    Spring+SpringMVC+Mybatis整合
  • 原文地址:https://www.cnblogs.com/ppf3678/p/9682268.html
Copyright © 2011-2022 走看看