14 二分查詢

2021-08-28 21:05:59 字數 795 閱讀 7041

給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target,用o(logn)的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1

在陣列[1, 2, 3, 3, 4, 5, 10]中二分查詢3,返回2

如果陣列中的整數個數超過了2^32,你的演算法是否會出錯?

思路:剛開始只是簡單的寫了乙個 沒有可考慮到可能有重複的值

錯誤**:適用於沒有重複的陣列

public static int binarysearch(int nums, int target)

//    

//            else if(target>nums[mid])

//            

//            else

//            

//        }

//        if(find==0)

//            return -1;

//        else

//            return result;

//        

正確**:public static int binarysearch(int nums,int target)

int start=0,end= nums.length-1;

while(start+1另外還可以採用遞迴的方式

14 二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例 在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。思路 1 target array mid 時,不能直接返回...

14 二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例 在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。思路 定三個座標,頭座標,尾座標,中間座標,每次判斷要查詢的...

14 二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例 1 輸入 1,4,4,5,7,7,8,9,9,10 1 輸出 0 樣例解釋 第一次出現在第0個位置。樣例 2 輸入 1,...