设有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说明要找的应该在左侧
- 1 回答
- 0 关注
- 2577 浏览
添加回答
举报
0/150
提交
取消