首页 > 其他 > 详细

Binary Search

时间:2014-02-13 14:28:43      阅读:389      评论:0      收藏:0      [点我收藏+]

在有重复元素的条件下如何进行binary search?原来的方法会返回重复元素中随机的一个。如何返回第一个target或者最后一个?

bubuko.com,布布扣
 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     }
bubuko.com,布布扣

Binary Search

原文:http://www.cnblogs.com/longhorn/p/3547412.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!