二分查找详解(含重复数据)

查找

—本文建立在已经完成排序的基础上

说到查找,大家都不陌生,今天我就来和大家聊一聊查找效率

一般人会使用顺序查找,即按顺序一个一个地分析

顺序查找

for(int i=0; i<n; i++)
  	if(a[i] == target)
    {
      	cout << i << endl;
      	break;
    }
但是!!!

如果这个n的大小为1亿,那么,我们平均就要做5000万次,太浪费时间了,时间复杂度大体可以看为O(n)。

注意!!!

有一种十分快捷简单的方法——二分查找!

二分查找

什么是二分查找?

二分查找其实就是一种分治的思想,把一个整体一分为二,通过比较,去掉一半,再如上去处理剩下一半。

比如说,我们原有5个数{1,2,3,4,5},这时,我要查找4,我们先找到中间的数字3,接着和4比一下,发现3<4。所以,4一定在3的右边,数组一下就去掉了左半边,得{4,5},再重复上述步骤,找到中间4,发现找到了,就结束。

代码


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值