對于一個有序數組,我們通常采用二分查找的方式來定位某一進制素,請編寫二分查找的算法,在數組中查找指定元素。
給定一個整數數組A及它的大小n,同時給定要查找的元素val,請傳回它在數組中的位置(從0開始),若不存在該元素,傳回-1。若該元素出現多次,請傳回第一次出現的位置。
測試樣例:
public class BinarySearch {
public int getPos(int[] A, int n, int val) {
if(n==0)return -1;
int left = 0;
int right = n-1;
int mid = (left+right)/2;
while(left<=right){
if(A[mid]==val){
int i = 1;
while(mid-i>=0&&A[mid]==A[mid-i]){
i++;
}
return mid-i+1;
}
else if(A[mid]>val){
right = mid-1;
mid = (left+right)/2;
}else {
left = mid+1;
mid = (left+right)/2;
}
}
return -1;
}
}