【算法入门】二分查找

本文介绍了二分查找算法的工作原理及其Python实现,通过对比不同算法的大O运行时间,阐述了算法效率的重要性。二分查找适用于有序列表,其运行时间为O(logn),远优于简单查找的O(n)。

1.二分查找

二分查找算法其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置;否则赶回null。

2,二分查找的python代码

def binary_search(list, item):
    low = 0
    high = len(list)-1       #low和high用于跟踪要在其中查找的列表部分

    while low <= high:            #只要范围没有缩小到只包含一个元素,
        mid = (low + high) / 2    #就检查中间的元素
        guess = list[mid]
        if guess == item:         #找到了元素
            return guess
        if guess > item:          #猜的数字大了
            high = mid-1
        else:                     #猜的数字小了
            low = mid+1
    return None


my_list = [1, 3, 5, 7, 9]

#测试
print(binary_search(my_list, 3))
print(binary_search(my_list, -1))

3,一些常见的大O运行时间

  • O(logn):对数时间,包括二分查找
  • O(n):线性时间,包括简单查找
  • O(n*logn):包括快速排序
  • O(n^2):包括选择排序
  • O(n!):旅行商问题

4.启示

  • 算法的速度指的并非时间,而是操作数的增速
  • 谈论算法速度时,说的是随输入的增加,其运行时间将以什么样的速度增加
  • 算法的运行时间用大O表示法表示
  • O(logn)比O(n)快,当需要搜索的元素越多时,前者比后者快越多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值