java之二分查找算法实现
来源:互联网 发布:罗技 淘宝 哪个是官方 编辑:程序博客网 时间:2024/05/20 00:36
/** * ">>" 右边移出去的部分扔掉不要,左边空出来的部分用原来的数字填充(这就是所谓的带符号右移) * ">>>" 右移 左边补0 */ /** * 二分查找(递归实现) * @param * @param array 有序数组 * @param from 起始下标 * @param to 终止下标 * @param key 需要查找的关键字 * @return * @throws Exception */ public static <E extends Comparable> int binarySearch(E[] array, int from, int to, E key) throws Exception { if (from < 0 || to < 0) { throw new IllegalArgumentException("params from & length must larger than 0 ."); } if (from <= to) { int middle = (from >>> 1) + (to >>> 1); // 右移即除2 E temp = array[middle]; if (temp.compareTo(key) > 0) { to = middle - 1; } else if (temp.compareTo(key) < 0) { from = middle + 1; } else { return middle; } } return binarySearch(array, from, to, key); } /** * 二分查找(非递归实现) * @param a 有序数组 * @param fromIndex 起始下标 * @param toIndex 终止下标 * @param key 需要查找的关键字 * @return */ private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) { int low = fromIndex; int high = toIndex - 1; while (low <= high) { int mid = (low + high) >>> 1; int midVal = a[mid]; if (midVal < key) low = mid + 1; else if (midVal > key) high = mid - 1; else return mid; // key found } return -(low + 1); // key not found. }
0 0
- 算法学习之java实现二分查找
- Java实现算法之--二分查找法
- java之二分查找算法实现
- Java算法实现之二分查找
- Java实现二分查找算法
- java 二分查找算法实现
- 二分查找算法java实现
- 二分查找算法----java实现
- Java实现二分查找算法
- java算法之二分查找
- Java-算法之二分查找
- java算法之二分查找
- 算法:查找----二分查找(Java实现)
- [查找算法]--二分查找的Java实现
- 算法之二分查找(java版实现加测试)
- 二分查找之Java实现
- 二分查找之Java实现
- java 之 二分查找实现
- Hibernate 三种检索策略
- iOS 特殊字符转换
- 解决 linux mint chinamon 菜单里软件更换引用的问题
- Mac环境下Node.js版本升级
- SLAM笔记六——Unscented Kalman Filter
- java之二分查找算法实现
- 解决SpringMVC在IE页面返回乱码问题
- oracle 10046事件 调试级别
- 深入理解OkHttp源码(三)——网络操作
- 解决C#调用执行js报检索 COM 类工厂中 CLSID 为 {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 组件失败
- 如何实现非填报表发布后源文件中生成ID
- 随便写写
- Python初识
- spring-spring mvc-mybatis 实现主从数据库配置