设a[0:n-1]是已排好序的数组.请改写二分搜索算法,使得当X不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
用JAVA写。我就是不知道怎么在一个方法中返回多个值。求大神解答。求详细代码实现
------解决思路----------------------
参考一下这个,这个是JAVA二分法的实现!
int[] nums = {1,2,3,4,5,6,7,8,9,10};
int begin = 0;
int end = nums.length - 1;
int key = 10;
int index = -1;
int times = 0;
while(begin <= end){
times++;
//
int middle = ( begin + end ) / 2;
//
if(nums[middle] == key){
index = middle;
break;
}
if(nums[middle] < key){
begin = middle + 1;
}
if(nums[middle] > key){
end = middle - 1;
}
}
//count : 4 , index : 9
System.out.println("count : "+ times + " , index : " + index);
------解决思路----------------------
public int onsort(int[]array int value){
int j=array.length;
while(--j>=0){
if(array[j]<value)
return j;
}
return -1;
}
------解决思路----------------------
楼主用递归应试试