Thursday, December 11, 2014

Binary Search - Java


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