设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
template <class T>
int binarySearch(T a[],const T&x,int left,int right,int &i,int &j){
int middle;
while(left<=right){
middle=(left+right)/2;
if(x==a[middle]){i=j=middle;return 1;}
if(x>a[middle]) left=middle+1;
else right=middle-1;
}
i=right;
j=left;
return 0;
}