设计并编写一个C语言函数unsigned char isldentical(int a[],unsigned int n),判断给定的长度为n的元素各不相同且已按升序排序的数组a中是否存在一个元素等于其索引值,即a[i]=i,如果存在返回1,否则返回0。要求算法的时间复杂度为O(log n)。
正如楼上说的 伪代码如下, isldentical 用去掉另外一个函数,占且定为isldenticalfun,需要知道开始,结束为位置 isldenticalfun(a[],0,n): if a[n/2]>n/2://说明在你只可能去左边找了 return isldenticalfun(a,0,n/2 -1) elseif a[n/2] < n/2 ://说明你只可能在右边找了 return isldenticalfun(a,n/2+1,n) else://说明找到了 return n/2
正如楼上说的
伪代码如下,
isldentical 用去掉另外一个函数,占且定为isldenticalfun,需要知道开始,结束为位置