package 查找;
public class BinarySearch {
static int[] itns = new int[]{1,2,3,4,5,6,7,8,9,11,111,323,3443};//必须是有序的才可以
public static void main(String[] args) {
int num = binarySearch(itns,0,itns.length,324); // 递归实现
num = binarySearch_(itns,3443); //while 实现
System.out.println(num);
}
/** 递归
* @param ints
* @param low
* @param high
* @param key
* @return
*/
private static int binarySearch(int[] ints,int low,int high,int key) {
if(low>=high){
return -1;
}else{
int midle = (low+high )/2;
if(ints[midle]==key){
return midle;
}
else if(ints[midle]<key){
return binarySearch(ints,midle+1,high,key);
}else{
return binarySearch(ints,low,midle-1,key);
}
}
}
/** 非递归
* @param ints
* @param key
* @return
*/
private static int binarySearch_(int[] ints,int key){
int midle = ints.length /2;
int low=0,high=ints.length;
while (low<high) {
midle = (low+high) / 2;
if(ints[midle] == key){
return midle;
}else if(ints[midle] < key){
low = midle+1;
}else if(ints[midle] > key){
high = midle-1;
}
}
return -1;
}
}