更新時間:2019-09-06 10:32:01 來源:動力節(jié)點 瀏覽2732次
今天動力節(jié)點java培訓機構小編為大家分享Java基本算法之二分查找算法,希望此文能夠幫助到正在學習java的小伙伴們,下面就隨小編一起看看Java基本算法之二分查找算法吧。
java二分查找算法
每次查找取數(shù)組中位數(shù)的值進行比較,
如果目標值值大于中位數(shù)的值,則截取中位數(shù)右側的數(shù)組再次進行二分查找
如果目標值小于中位數(shù)的值,則截取中位數(shù)左側的數(shù)組再次進行二分查找
直到找到相對應的中位數(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ù)組
以上就是動力節(jié)點java培訓機構小編為大家分享的“Java基本算法及二分查找算法”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。
相關免費視頻教程推薦
java入門教程下載——二分查找:http://m.dabaquan.cn/xiazai/2533.html