Java-二分查找算法
2015-05-08 21:00
351 查看
package com.lym.binarySearch; import java.util.Arrays; /** * 二分查找 * * @author Administrator * */ public class BinarySearchDemo { public static void main(String[] args) { int[] number = { 4, 2, 66, 12, 88, 95, 63, 1 }; Arrays.sort(number);// 先对数组排序,然后再进行二分查找 int index = binarySearch(number, 63);//parameter(int[],key) System.out.println(index); } //二分查找 public static int binarySearch(int[] a, int n) { rangeCheck(a.length,0,a.length-1); return binarySearch0(a, 0, a.length, n); } //异常检测 private static void rangeCheck(int length, int fromIndex, int toIndex) { if (fromIndex > toIndex) { throw new IllegalArgumentException( "fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")"); } if (fromIndex < 0) { throw new ArrayIndexOutOfBoundsException(fromIndex); } if (toIndex > length) { throw new ArrayIndexOutOfBoundsException(toIndex); } } //二分查找核心算法 private static int binarySearch0(int[] a, int fromIndex, int toIndex, int n) { int low = fromIndex; int high = toIndex - 1; while (low <= high) { int mid = (low + high) >>> 1;// middle index 采用移位运算符可以提高性能 int midVal = a[mid];// middle value if (midVal > n) high = mid - 1; else if (midVal < n) low = mid + 1; else return mid;//key found } return -(low + 1);// key no found } }
相关文章推荐
- Java学习资料-Java常用算法-二分查找算法
- java 二分查找算法
- java数据结构与算法-递归二分查找
- java 算法二分查找和折半查找
- [算法]java实现 二分查找 斐波那契数列 静静思考
- 二分查找算法原理及其java循环实现
- 二分查找算法java
- Java必知必会查找算法:顺序查找、二分查找
- 数据结构和算法设计专题之---二分查找(Java版)
- 数据结构和算法设计专题之---二分查找(Java版)
- 算法 -- Java实现二分(折半)查找(图解 + 代码实现)
- 数据结构和算法设计专题之---二分查找(Java版)
- 二分查找算法java实现
- 算法入门---java语言实现的二分查找小结
- java简单算法(二分查找 冒泡排序 判断是否为素数)
- java算法基础--二分查找
- java 二分查找算法实现
- Java数据结构与算法之【二分查找】
- 【Java】二分查找敏感字词过滤算法
- Java-二分查找算法