为了账号安全,请及时绑定邮箱和手机立即绑定

算法分析与设计

算法分析与设计

C C++
吴李头 2017-10-23 20:57:49
设有N个互不同的整数,按递增顺序存放在数组a[0..n-1]中,若存在一个下标i(0《i<n),使得a[i]=i.设计一个算法以O(log2n)时间找到这个下标i
查看完整描述

1 回答

?
慕仔3118017

TA贡献16条经验 获得超5个赞

int i =0,j=n-1;

res =-1;

while(i<j)

{

    l=(j-i)/2+i;

    if (a[l]==l)

    {

        res=l;break;

    }

    else if(a[l]<l)

    {

        i=l;continue;

    }

    else if (a[l]>l)

    {

        j=l;continue;

    }

}

用二分法查找,如果a[l]<l说明在a[l]右侧才可能出现a[k]=k,同理a[l]>l说明要找的应该在左侧

查看完整回答
反对 回复 2018-01-24
  • 1 回答
  • 0 关注
  • 2577 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信