zoukankan      html  css  js  c++  java
  • Python基础第十二天:二分法算法

    二分法查找算法

      如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么办?

      l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

      

      实现

    l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88,89]
    l.sort()
    def func(l,aim):
        if len(l) == 0:
            print("not find")
            return
        index = (len(l)-1)//2
        if aim > l[index]:
            func(l[index+1:],aim)
        elif aim < l[index]:
            func(l[:index-1],aim)
        elif aim == l[index]:
            print('find ', aim)
        else:
            print("not find")
    
    func(l,31)
    not find
    l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88,89]
    l.sort()
    def search(num,l,start=None,end=None):
        start = start if start else 0
        end = end if end else len(l) - 1
        mid = (end - start)//2 + start
        
        if start > end:
            return None
        elif l[mid] > num :
            return search(num,l,start,mid-1)
        elif l[mid] < num:
            return search(num,l,mid+1,end)
        elif l[mid] == num:
            return mid
    
    print(search(31,l))
    None

     

  • 相关阅读:
    mysql 主从复制原理
    java操作ldap
    ldap数据库--ldapsearch,ldapmodify
    ldap数据库--ODSEE--ACI
    ldap数据库--ODSEE--schema
    ldap数据库--ODSEE--复制协议
    ldap数据库--ODSEE--suffix
    ldap数据库--ODSEE--卸载
    ldap数据库--ODSEE--安装
    WebService--cxf
  • 原文地址:https://www.cnblogs.com/nzd123456/p/8974653.html
Copyright © 2011-2022 走看看