zoukankan      html  css  js  c++  java
  • Python 实现二分查找

    """
    二分查找,在有序列表基础上
    bisect 模块
    """
    
    # 普通方式
    def binary_search(sorted_array, val):
        if not sorted_array:
            return -1
    
        beg = 0
        end = len(sorted_array) - 1
        while beg <= end:
            mid = int((beg + end)/2)
            if sorted_array[mid] == val:
                return mid
            elif sorted_array[mid] > val:
                end = mid - 1
            else:
                beg = mid + 1
        return -1
    
    
    # 递归实现二分
    def binary_search_recursive(sorted_array, beg, end, val):
        if beg >= end:
            return -1
        mid = int((beg + end) / 2)
        if sorted_array[mid] == val:
            return mid
        elif sorted_array[mid] > val:
            return binary_search_recursive(sorted_array, beg, mid, val)
        else:
            return binary_search_recursive(sorted_array, mid+1, end, val)
    
    
    print(binary_search_recursive([2,3,4], 0, 3, 4))
    
  • 相关阅读:
    5js
    4js
    3js
    2js
    1js
    7css
    6css
    5css
    Django高级项目实战-开发企业级问答网站,学Django就这了
    Java日志第27天 2020.8.1
  • 原文地址:https://www.cnblogs.com/jiaoran/p/14584302.html
Copyright © 2011-2022 走看看