算法:二分法查找(折半查找法)

算法:二分法查找(折半查找法)

//二分查找法(折半查找法)
    public static int halfSearch(int[] arr,int number){
        int min =0;  //最小下標
        int max =arr.length-1;   //最大下標
        int mid = 0;  //中間下標
        while (min<=max){
            //沒找到,更新范圍繼續(xù)找
            mid = (min+max)/2;
            if (arr[mid]>number){   //number在mid的左邊
                max = mid-1;  //改變最大下標
            }else if(arr[mid]<number){  //number在mid的右邊
                min = mid+1;  //改變最小下標
            }else{
                return  mid;
            }
        }
        return -1;
    }

這是最經(jīng)典的折半查找,而在面試的時候往往會對某些經(jīng)典的數(shù)據(jù)結構和算法進行魔改,這道題總是被改成以下的問題:
1.使用二分法對一個數(shù)組中的數(shù)據(jù)進行查找,返回目標數(shù)值所在的下標:包含與目標值重復的所有左邊的值
2.使用二分法對一個數(shù)組中的數(shù)據(jù)進行查找,返回目標數(shù)值所在的下標:包含與目標值重復的所有右邊的值
3.使用二分法對一個數(shù)組中的數(shù)據(jù)進行查找,返回所有目標數(shù)值所在的下標

這些雷你踩過了么?
PS:今天剛踩到了3號復合雷,前來報到!

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

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

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