程序填空题:折半查找最右边的x元素
当有序数组中存在相同元素x时,折半查找返回最右边的x的下标。
c++
int BinSearch(int a[],int n,int x) { //查找最右边的x
int mid,low=0,high=n-1;
while () { //区间存在一个以上的元素
mid=;
if (x>=a[mid])
low = ;
else
high=mid-1;
}
if (low>high)
return -1;
else if( )
return -1;
else
return low;
}
答案:
第1空:low<high
第2空:(low+high + 1)/2
第3空:mid
第4空: a[low]!=x
c++
int BinSearch(int a[],int n,int x) { //查找最右边的x
int mid,low=0,high=n-1;
while () { //区间存在一个以上的元素
mid=;
if (x>=a[mid])
low = ;
else
high=mid-1;
}
if (low>high)
return -1;
else if( )
return -1;
else
return low;
}
答案:
第1空:low<high
第2空:(low+high + 1)/2
第3空:mid
第4空: a[low]!=x