二分查找(折半查找)的实现
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 的方式获得,这样做有可能会产生越界的异常。使用位运算是很好的选择。
相关文章推荐
- 二分查找(折半查找),Java实现
- Java代码实现一维数组的二分查找(折半查找)(非递归方法)
- 折半查找(二分查找)实现
- 二分查找(折半查找)的思路与实现 java实现
- 递归实现二分查找/折半查找——Java/算法/蓝桥杯
- 采用二分查找(即折半查找)的方法实现查找
- 十.用C语言实现查找算法 (1)顺序查找;(2)二分查找(折半查找);(3)二叉排序树;(4)哈希查找
- 折半查找实现算法二(递归办法)PS:编译后有一个warning,但不影响结果,代码设计上应该还有些问题
- 【java基础知识(难点攻克)】--数组元素二分查找(折半查找)
- Python基于二分查找实现求整数平方根的方法
- 二分查找(折半查找)算法
- PHP实现二分查找(Easy said than done)
- 数据结构实现之有序符号表BinarySearchST(使用有序数组的二分查找)
- C语言实现二分查找
- Java实现冒泡排序、折半查找
- Java实现一个二分查找
- 数据算法之折半查找(binSearch)的Java实现
- 二分查找(折半查找)
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现二分查找