給定乙個排序的整數陣列(公升序)和乙個要查詢的整數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,...