设计并编写一个C语言函数unsignedcharisldentical(inta[],unsignedintn),判断给定的长度为n的元素各不相同且已按升序排序的数组a中是否存在一个元素等于其索引值,即a[i]=i,如果存在返回1,否则返回0。要求算法的时间复杂度为O(logn)。
2 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
正如楼上说的伪代码如下,isldentical用去掉另外一个函数,占且定为isldenticalfun,需要知道开始,结束为位置isldenticalfun(a[],0,n):ifa[n/2]>n/2://说明在你只可能去左边找了returnisldenticalfun(a,0,n/2-1)elseifa[n/2]returnisldenticalfun(a,n/2+1,n) else://说明找到了returnn/2
添加回答
举报
0/150
提交
取消