算法图解第一章—二分查找

算法:算法是一组完成任务的指令,任何一段代码都可以叫做算法。

二分查找:二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null 。举例:猜数字游戏,如果要猜0-999个数字中的一个,从0-999依次猜下来最多要猜1000次,使用二分查找需要多少次呢?

基于python3的代码实现:

def binary_search(test_list,item):    '''binary search based on python3'''    low = 0    high = len(test_list)-1    while low <= high:        mid = (low +high)//2        guess = test_list[mid]        if guess == item:            return mid            elif guess > item:            high = mid - 1  # minus 1 is crucial        elif guess < item:            low = mid + 1      return Nonemy_list = list(range(0,40,3))print(binary_search(my_list,27))

大O表示法:是一种特殊的表示法,指出了算法的速度有多快。谁在乎呢?实际上,你经常要使用别人编写的算法,在这种情况下,知道这些算法的速度大有裨益。例如,假设列表包含n 个元素。简单查找需要检查每个元素,因此需要执行n 次操作。使用大O表示法,这个运行时间为O (n )。单位秒呢?没有——大O表示法指的并非以秒为单位的速度。大O表示法让你能够比较操作数,它指出了算法运行时间的增速,下面这张图解释了这一点。为检查长度为n 的列表,二分查找需要执行log n 次操作。使用大O表示法,这个运行时间怎么表示呢?O (log n )。大O表示法指出了最糟情况下的运行时间,简单查找的运行时间总是O(n)。举个例子,假设你在0-999中查找0,它的大O表示法表示是O(n),而不是O(1)。

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

一些常见的大O运行时间:

O (log n ),也叫对数时间 ,这样的算法包括二分查找。

O (n ),也叫线性时间 ,这样的算法包括简单查找。

O (n * log n ),这样的算法包括快速排序——一种速度较快的排序算法。

O (n 2 ),这样的算法包括选择排序——一种速度较慢的排序算法。

O (n !),这样的算法包括著名的的旅行商问题的解决方案——一种非常慢的算法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值