二分查找的循环和递归方法

half(一半)Search(搜索)
Java 代码:

/..
. 二分查找算法(非递归方式)
.
  1.  /* 
  2.      * 非递归二分查找算法 
  3.      * 参数:整型数组,需要比较的数. 
  4.      */  
  5.     public static int binarySearch(Integer[]srcArray,int des){  
  6.         //第一个位置.  
  7.         int low=0;  
  8.         //最高位置.数组长度-1,因为下标是从0开始的.  
  9.         int high=srcArray.length-1;  
  10.         //当low"指针"和high不重复的时候.  
  11.         while(low<=high){  
  12.             //中间位置计算,low+ 最高位置减去最低位置,右移一位,相当于除2.也可以用(high+low)/2  
  13.             int middle=low+((high-low)>>1);  
  14.         //与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标.  
  15.         if(des==srcArray[middle]){  
  16.             return middle;  
  17.         //如果小于的话则移动最高层的"指针"  
  18.         }else if(des<srcArray[middle]){  
  19.             high=middle-1;  
  20.         //移动最低的"指针"   
  21.         }else{  
  22.             low=middle+1;  
  23.             }  
  24.         }  
  25.         return-1;  
  26.         }  
  27.       
  28. }  




/..
  . 二分查找算法(递归方式)
  .
 
  1. public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){    
  2.        int midIndex = (beginIndex+endIndex)/2;    
  3.        if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){  
  4.            return -1;    
  5.        }  
  6.        if(data <dataset[midIndex]){    
  7.            return binarySearch(dataset,data,beginIndex,midIndex-1);    
  8.        }else if(data>dataset[midIndex]){    
  9.            return binarySearch(dataset,data,midIndex+1,endIndex);    
  10.        }else {    
  11.            return midIndex;    
  12.        }    
  13.    }   
  14.   
  15. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值