更新時(shí)間:2019-09-06 10:32:01 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2801次
今天動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編為大家分享Java基本算法之二分查找算法,希望此文能夠幫助到正在學(xué)習(xí)java的小伙伴們,下面就隨小編一起看看Java基本算法之二分查找算法吧。
java二分查找算法
每次查找取數(shù)組中位數(shù)的值進(jìn)行比較,
如果目標(biāo)值值大于中位數(shù)的值,則截取中位數(shù)右側(cè)的數(shù)組再次進(jìn)行二分查找
如果目標(biāo)值小于中位數(shù)的值,則截取中位數(shù)左側(cè)的數(shù)組再次進(jìn)行二分查找
直到找到相對(duì)應(yīng)的中位數(shù)才終止查找算法。
即每經(jīng)過(guò)一次比較,查找范圍就縮小一半。
while循環(huán)實(shí)現(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;
}
遞歸實(shí)現(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) + "]");
}
注意事項(xiàng)
要求進(jìn)行查找的數(shù)組必須是有序數(shù)組
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編為大家分享的“Java基本算法及二分查找算法”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)免費(fèi)視頻教程推薦
java入門教程下載——二分查找:http://www.dabaquan.cn/xiazai/2533.html
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743