Binary Search
在有重复元素的条件下如何进行binary search?原来的方法会返回重复元素中随机的一个。如何返回第一个target或者最后一个?
1 public static int binarySearch(int[] A, int target) { 2 int start = 0; 3 int end = A.length-1; 4 int mid = 0; 5 6 int result = -1; 7 8 while (start <= end) { 9 mid = (start + end) / 2; 10 if (A[mid] == target) { 11 result = mid; //result标记下当前找到的target的下标 12 end = mid - 1;//如果想找到第一个,那么就在当前找的target的前一个元素到开始继续找 13 // start = mid + 1;//如果想找到最后一个,那么就在当前找到的最后一个的后面一个开始继续找 14 } 15 else if (A[mid] > target) { 16 end = mid - 1; 17 } 18 else { 19 start = mid + 1; 20 } 21 } 22 23 return result; 24 25 }
http://blog.csdn.net/wuzhekai1985/article/details/6599896