Python数据结构与算法11——二分法查找

作者: 皮皮大 | 来源:发表于2019-09-26 18:34 被阅读0次

二分查找

折半查找,比较次数少,速度快,只能作用于有序数组和顺序表

  • 最优时间复杂度:O(1)
  • 最坏时间复杂度:O(logn)

代码实现

# coding: utf-8

def binary_search(alist, item):
    # 二分查找,递归版本
    n = len(alist)
    
    # 只有if条件才能进行操作
    if n > 0:
        mid = n // 2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            # item在左边部分继续查找
            return binary_search(alist[:mid], item)
        else:
            # 右边继续查找
            return binary_search(alist[mid+1:], item)
    return False


# 非递归二分查找
def binary_search2(alist, item):
    # 非递归
    n = len(alist)
    first = 0
    last = n-1
    
    while first <= last:
        mid = (first + last) // 2
        if alist[mid] == item:
            return True
        # 下面的语句只是将搜索的范围缩小
        elif item < alist[mid]:
            last = mid - 1
        else:
            first = mid + 1
    return False

if __name__ == "__main__":
    li = [1, 3, 4, 6, 7 ,8 ,9, 10, 17]
    print(binary_search(li, 8))
    print(binary_search(li, 88))
    
    print(binary_search2(li, 8))
    print(binary_search2(li, 88))

相关文章

  • 算法草稿

    常用算法集合 字符处理算法数组与查找链表树算法思路 递归、动态规划、BFS/DFS、双指针、二分法搜索数据结构的...

  • 算法:二分法查找(折半查找法)

    算法:二分法查找(折半查找法) 这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道...

  • 和老婆重新入门开发(准备阶段)

    Python 数据结构与算法 查找 排序 其它常见算法 代码仓库的相关管理 分支git命令 数据库 关系型数据库 ...

  • 【爬虫】数据结构实现折半查找的算法

    数据结构实现折半查找的算法 折半查找技术,也就是二分查找,通常称为二分法查找。它的前期是线性表中的记录必须是关键码...

  • Python数据结构与算法11——二分法查找

    二分查找 折半查找,比较次数少,速度快,只能作用于有序数组和顺序表 最优时间复杂度: 最坏时间复杂度: 代码实现

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 个人 Python 书单

    入门: Beginning Python 数据结构: Python 数据结构 算法: Python 算法教程

  • 最新完整数据结构与算法

    最新完整数据结构与算法 P11_课程介绍 P22_数据结构与算法概述_数据结构 P33_数据结构与算法概述_算法 ...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

网友评论

    本文标题:Python数据结构与算法11——二分法查找

    本文链接:https://www.haomeiwen.com/subject/qamtyctx.html