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

    二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。


    使用循环和递归两种方法:
    import time
    
    
    def mytime(func):
        def inner(*args, **kwargs):
            t1 = time.time()
            func(*args, **kwargs)
            t2 = time.time()
            print('time costed is {}.'.format(t2-t1))
        return inner
    
    
    @mytime
    def bin_ser(data, li):
        if len(li) > 0:
            left = 0
            right = len(li) - 1
        else:
            print('list is too short!')
            return
    
        while left < right:
            mid = (left + right) // 2
            if li[mid] > data:
                right = mid
            elif li[mid] < data:
                left = mid
            else:
                print('1-the position is {}.'.format(mid))
                break
    
    
    @mytime
    def bin_ser2(data, li):
        def bin_mid(left, mid, right):
            if li[mid] > data:
                right = mid
            elif li[mid] < data:
                left = mid
            else:
                print('2-the position is {}.'.format(mid))
                left = right
            mid = (left + right) // 2
            if left < right:
                return bin_mid(left, mid, right)
        left = 0
        right = len(li) - 1
        mid = (left + right) // 2
        bin_mid(left, mid, right)
    
    l = list(range(40, 10000))
    bin_ser(42, l)
    bin_ser2(42, l)
    

      



  • 相关阅读:
    [git] git 的基本认知
    [Java] Java IO Files
    [Java] Java IO 概况
    [Java] JavaMail 发送带图片的 html 格式的邮件
    [Java] HashMap 导致的高 CPU 使用率
    [Struts] Hello World Demo
    [Hibernate] 注解映射例子
    [Hibernate] List 映射例子
    cmd的xcopy命令
    wpf custom control
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/8422200.html
Copyright © 2011-2022 走看看