当前位置: 代码迷 >> J2SE >> 改写2分搜索算法
  详细解决方案

改写2分搜索算法

热度:50   发布时间:2016-04-23 20:14:36.0
改写二分搜索算法,
设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;
}
------解决思路----------------------
楼主用递归应试试