java折半查找算法

转载自:http://bo-hai.iteye.com/blog/889287

递归方法


/**
* @author hbliu
* @param arrayData 数组
* @param searchData 要查找的数据
* @param start 开始下标
* @param end 结束下标
* @return 数据在数组中下标的位置,如果数据不在数组中,返回 -1
* 功   能:折半查找 
*/
public static int splitHalf(int[] arrayData,int searchData,int start,int end){
int index = (start + end)/2;
int data = arrayData[index];
if(start > end ){
return -1;
}
if(data == searchData){
return index;
}else if(data < searchData){
return splitHalf(arrayData,searchData,index+1,end);
}else{
return splitHalf(arrayData,searchData,start,index-1);
}
}
}

非递归的方法:


public static int splitHalf(int[] arrayData,int searchData){

               int start =0;

              int end = arrayData.length-1;

               while(start<=end){

                          int mid = (start+end)/2;

                          int data = arraryData[mid];

                          if(searchData==data)

                                                                   return mid;

                           else{

                                       if(searchData<data){

                                        end = mid-1;

                                         }else{

                                        start = mid+1;

                                    }

                              return -1;

}


猜你喜欢

转载自blog.csdn.net/woaigengxiaoning/article/details/51108589