要写一个完备的程序属实不易呀。
采用了迭代式和递归式两种方法实现:
package com.wjy.renren;
public class BinarySearch {
private static int tag=-1;
public static void main(String args[]){
int[] array={3,6,8,9,12,36,76};
int num=36;
binarySearch2(array,num,0,array.length);
System.out.println(tag);
System.err.println(binarySearch(array,num));
}
/**
*
* @param array是有序的数组,在这里是升序排列
* @param num
* @return
*/
private static int binarySearch(int[] array,int num){
if(array.length<1){
return -1;
}
int begin=0;
int end=array.length;
int mid=(begin+end)/2;
while(mid>=0&&mid<array.length){
if(array[mid]==num){
return mid;
}else if(array[mid]<num&&begin!=end){
begin=mid+1;
}else if(array[mid]>num&&begin!=end){
end=mid-1;
}else{
break;
}
mid=(begin+end)/2;
}
return -1;
}
/**
* 采用递归的方式实现
* @param array是有序的数组,在这里是升序排列
* @param num
* @return
*/
private static void binarySearch2(int[] array,int num,int begin,int end){
if(array.length<1){
return;
}
int mid=(begin+end)/2;
if(array[mid]==num){
tag=mid;
return;
}
else{
if(mid==0||mid==array.length-1||begin==end){
return;
}
if(array[mid]>num)
{
binarySearch2(array, num, begin, mid-1);
}
else{
binarySearch2(array, num, mid+1, end);
}
}
}
}