二分法的改进方法(C++)(Fibonacci Search)

一、二分法的引入

1.背景

要求:
在一个有序向量中查找一个目标元素值,找到返回下标,反之返回-1。
直观思路:
挨个对比,时间复杂度为o(n)。
但是相对于下面的算法,其复杂度的差距还是让我们难以忍受的。

2.思路

对于直观思路的这种算法,在无序向量下通常也适用。然而对于有序这个条件来说,我们往往可以采用“减而治之”,通过从对半比较,将问题的规模每次缩小一半,可以大大减少时间复杂度。

3.实现(主要设计思路)

template<typename T>
static Rank binSearch(T*A,T const&e,Rank lo,Rank hi)
{
   
   
    while(lo<hi)//每部迭代可能要做两次比较判断,有三个分支
    {
   
       Rank mi=(lo+hi)>>1;//以中点为轴点
         if(e<A[mi
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值