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

posted on 2014-02-13 01:38  longhorn  阅读(213)  评论(0编辑  收藏  举报

导航