您的位置:首页 > 其它

二分查找(折半查找)的实现

2014-01-06 12:31 211 查看
Java的二分查找,就是在一个容器或是数组当中,从中点位置开始查找想要的到的元素。如果中点元素就是想要的,则直接返回中点的坐标,如果不是,则判断查找元素与中点元素的大小。如果大于中点坐标,就从中点坐标右边再取得中点坐标,按照相同的方法进行比对,一直到得到需要的元素。如果小于中点坐标,就从中点坐标右边查找。如果容器中没有该元素,则返回-1。二分查找方法必须在有序的前提下。代码如下:
public static <T extends Comparable<T>> int query01 (T[] x, T t){
int end = x.length - 1;
int start = 0;

while (start <= end){
int mid = start + ((end - start) >> 2); //(end - start) >>> 2
if (x[mid].compareTo(t) > 0){
start = mid + 1;
} else if (x[mid].compareTo(t) < 0){
end = mid - 1;
} else {
return mid;
}
}

return -1;
}
对于 mid 的取值问题,不能直接使用 (end - start) / 2 的方式获得,这样做有可能会产生越界的异常。使用位运算是很好的选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: