二分查找算法
每次查找取數(shù)組中位數(shù)的值進行比較,
如果目標(biāo)值值大于中位數(shù)的值凑队,則截取中位數(shù)右側(cè)的數(shù)組再次進行二分查找
如果目標(biāo)值小于中位數(shù)的值,則截取中位數(shù)左側(cè)的數(shù)組再次進行二分查找
直到找到相對應(yīng)的中位數(shù)才終止查找算法顽决。
即每經(jīng)過一次比較,查找范圍就縮小一半。
while循環(huán)實現(xiàn)二分查找
private static int binSearch(int array[], int value){ int start=0;
int end =array.length-1;
int middle;
while(start<=end){
middle = (end-start)/2+start;
if(array[middle] < value){
start = middle+1;
}else if (array[middle]>value){
end = middle-1;
}else{
return middle;
}
}
return -1;
}
遞歸實現(xiàn)二分查找算法
private static int binSearch(int array[],int start,int end,int value){
int middle = (end-start)/2+start;
if(array[middle]==value){
return middle;
}
if(start>=end){
return -1;
} else if (array[middle]>value){
return binSearch(array,start,middle-1,value);
}else {
return binSearch(array,middle+1,end,value);
}
}
main方法中調(diào)用
public static void main(String[] args) {
int array[] ={1,2,3,4,5};
System.out.println("args = [" + binSearch(array,0,array.length-1,3) + "]");
}
注意事項
要求進行查找的數(shù)組必須是有序數(shù)組