二分查找

二分查找的時(shí)間復(fù)雜度logn,前題是有序

先與l+(r-l)/2處比較就是中間位置比較,為什么不是(l+r)/2呢,因?yàn)閘+r相加有可能會(huì)發(fā)生溢出。

小于中間位置,則在左邊位置繼續(xù)重復(fù)上一步,大于則在右邊重復(fù),如此重復(fù)即可。

public static int find(Comparable[] arr, Comparable target) {

// 在arr[l...r]之中查找target

? ? int l =0, r = arr.length-1;

? ? while( l <= r ){

//int mid = (l + r)/2;

? ? ? ? // 防止極端情況下的整形溢出,使用下面的邏輯求出mid

? ? ? ? int mid = l + (r-l)/2;

? ? ? ? if( arr[mid].compareTo(target) ==0 )

return mid;

? ? ? ? if( arr[mid].compareTo(target) >0 )

r = mid -1;

else

? ? ? ? ? ? l = mid +1;

? ? }

return -1;

}


遞歸實(shí)現(xiàn)

private static int find(Comparable[] arr, int l, int r, Comparable target){

if( l > r )

return -1;

? ? //int mid = (l+r)/2;

? ? // 防止極端情況下的整形溢出,使用下面的邏輯求出mid

? ? int mid = l + (r-l)/2;

? ? if( arr[mid].compareTo(target) ==0 )

return mid;

? ? else if( arr[mid].compareTo(target) >0 )

return find(arr, l, mid-1, target);

else

? ? ? ? return find(arr, mid+1, r, target);

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,157評(píng)論 0 2
  • php -@amazeUI -2016-11-28 11:45:31 二分查找和快速排序思想上有很大的相似度,就...
    與子笑閱讀 695評(píng)論 0 0
  • 感恩一位同鄉(xiāng)好友,我們一行幾人去到另一同鄉(xiāng)開的農(nóng)家樂,一起品家鄉(xiāng)菜,議家鄉(xiāng)情!感恩同鄉(xiāng)帶我們一起看電影,放松身心!...
    碧霞閱讀 93評(píng)論 0 0
  • 昨天,米多去叔叔家看一個(gè)多月大的小妹妹,叔叔送他一個(gè)電動(dòng)玩具狗,米多特別喜歡,在叔叔家玩了好一會(huì)。 離開的時(shí)候米多...
    米多多成長日記閱讀 271評(píng)論 0 0
  • 一彎新月 幾顆明星 照出夜空的遙遠(yuǎn)和深邃 一絲清風(fēng) 幾處蛙聲 叫出幾分寧靜和空幽 一個(gè)人 幾個(gè)樹影 夜空下 小渠旁...
    白馬騎士99閱讀 224評(píng)論 0 3

友情鏈接更多精彩內(nèi)容