public int binarySearch(int A[], int target) {
int start = 0;
int end = A.length - 1;
while (start <= end) {
int mid = (end - start) / 2 + start;
if (target < A[mid]) {
end = mid - 1;
} else if (target > A[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}
Tips of boundary:终止条件:i <= j, i < j
mid的上下取值: i+(j-i)/2, j-(j-i)/2
分半的时候取:mid, mid-1, or mid+1
1. 如果终止条件i <= j, mid取向为 i + ( j - i ) / 2, 分半的时候取 mid-1 or mid+1;
2. 如果终止条件i < j, mid取向两种都需要用到,分半的时候需要用到 mid;一般取mid的时候,终止条件往往是i < j
No comments:
Post a Comment