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

    二分查找要求数组必须有序,代码比较容易理解

    如下:

    # coding: utf-8
    
    # non-recurse
    # 迭代版
    def binary_search(alist, aitem):
        n = len(alist)
        start = 0
        end = n - 1
        while start <= end:
            mid = (start + end) // 2
            if alist[mid] == aitem:
                return True
            elif aitem < alist[mid]:
                end = mid - 1
            else:
                start = mid + 1
        return False
    
    
    # recurse
    # 递归版
    def binary_search_recurse(alist, aitem):
        n = len(alist)
        if n == 0:
            return False
        mid = n // 2
        if aitem == alist[mid]:
            return True
        elif aitem < alist[mid]:
            return binary_search_recurse(alist[:mid], aitem)
        else:
            return binary_search_recurse(alist[mid + 1:], aitem)
    
    if __name__ == "__main__":
        arr1 = [0, 1, 3, 5, 7, 8]
        item = 3
        print 
        print(binary_search(arr1, item))
        # print(binary_search_recurse(arr1, item))
    
  • 相关阅读:
    vue element 关于表单数组循环、对象数据校验
    vue 解耦双向数据绑定,new Set() 去重数组/对象
    Vue-cli3.0搭建和一些坑
    微信小程序入门学习小结--全局设置、数据请求、双向绑定、页面路由跳转、模板抽取
    Vuex简单入门实例
    关于wamp的HTML, PHP, mysql 三者的操作与联系
    关于wamp的HTML, PHP, mysql 三者的操作与联系
    浏览器知识小整理
    HTML DOM textContent 与 innerHTML的区别
    T-SQL查询进阶--SQL Server中的事务与锁
  • 原文地址:https://www.cnblogs.com/becker/p/8232493.html
Copyright © 2011-2022 走看看