算法图解之二分查找

二分查找

简述该算法的作用 :输入一个有序的元素列表,如果要查找的元素包含在列表中,结果返回其位置,否则为null。

与简单查找的相比

1、对于一个包含n个元素的列表,用二分法查找需要logn步(log一般是以2为底),用简单查找最多需要n步。大大减少了查找的时间,提高了效率。但值得我们注意的是一定要是有序列表,才可以采用二分查找减少查找代价。
2、 随着实验数量的数量的增加,二分查找需要的额外时间并不多,而简单查找需要的额外时间却很多。有鉴于此,仅知道算法需要多长时间才能运行完毕还不够,还需知道运行时间如何随列表增长而增加。这正是大O表示法的用武之地。

大O表示法

大O表示法指出了算法有多快。例如,假设列表包含n个元素。简单查找需要检查每个元素,因此需要执行n次操作。使用大O表法,这个运行时间为O(n)。然而二分查找需要执行log n次操作,使用大O表示法,这个运行时间用O(log n)表示。单位秒呢?没有——大O表示法指的并非以秒为单位的速度。大O表示法让你能够比较操作数,它指出了算法运行时间的增速。

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


在看了上面的对比后,可能会认为根本就没有运行时间为第五种的算法,那你就错了!这个算法主要解决非常著名的旅行商问题

简述旅行商问题

一位旅行商要前往五个城市,同时确保旅程最短。5个城市有120种不同的排列方式。因此,在涉及5个城市时,解决这个问题需要执行120次操作。涉及6个城市时,需要执行720次操作(有720种不同的排列方式)。涉及7个城市时,需要执5040次操作!推而广之,涉及n个城市时,需要执行n!(n的阶乘)次操作才能计算出结果。因此运行时间为O(n!),即阶乘时间。
这是一个计算机科学领域待解决的问题之一,对于这个问题还没找到更快的算法。

二分查找的核心代码:

修改:mid=(low+high)/2
测试一下:
在这里插入图片描述
结果:
在这里插入图片描述

大家可以参考以下链接:
https://blog.csdn.net/m0_37846020/article/details/103039728

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值