二分搜索的java源码实践
来源:互联网 发布:word文档下载mac版 编辑:程序博客网 时间:2024/06/08 19:17
平常编程中,经常要用到二分搜索。
java JDK中的java.lang.Arrays类中已经实现了二分搜索。
可以方便地在一个已排序好数组中,查找给定的元素。
数组元素可以是byte,int,char,long,float,double等等基本类型。
今天我自己用java实现一次,分别用递归和非递归两种方式实现。java源码如下:
//非递归实现public static String binarySearch2(int[] array, int value) {String result = "index of " + value + " is ";int low = 0;int high = array.length - 1;int middle = 0;while (low <= high) {middle = (low + high)>>1;if (array[middle] == value) {return result + middle;} else if (array[middle] < value) {low = middle + 1;} else {high = middle - 1;}}return "no such element" + value;}//递归实现public static String binarySearchRecursive(int[] array, int start, int end, int value) {String result = "index of " + value + " is ";if (start <= end) {int middle = (start + end)>>1;if (array[middle] == value) {result += middle;System.out.println(result);return result;} else if (array[middle] < value) {return binarySearchRecursive(array, middle + 1, end, value);} else {return binarySearchRecursive(array, start, middle - 1, value);}}return "no such element " + value;}public static void main(String[] args) {int[] array = {1,2,3,4,5,6,7,8,9};String result = binarySearchRecursive(array, 0, array.length - 1, 3);System.out.println(result);}
递归实现的结果如下:(注意递归函数与非递归函数的区别)
index of 3 is 2
index of 3 is 2
非递归实现如下:
index of 3 is 2
0 0
- 二分搜索的java源码实践
- 二分搜索的java实现
- java 二分搜索法
- java二分搜索算法
- 二分搜索(java)
- 无处不在的二分搜索
- 二分搜索的应用
- 二分搜索的总结
- Java二分查找源码
- 二分查找算法(java)二分搜索
- 二分搜索(JAVA & Python)
- java实现二分搜索树
- java.util.Arrays的BUG - 二分搜索算法
- java.util.Arrays的BUG - 二分搜索算法
- [转贴]java.util.Arrays的BUG - 二分搜索算法
- java.util.Arrays的BUG - 二分搜索算法
- 分治:二分搜索法算法的java实现
- java-顺序和乱序数组的二分搜索
- 19_读取短信内容
- mysql 查询理解
- 中介者模式
- 20_读取播放音效
- 为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
- 二分搜索的java源码实践
- 21_锁屏和恢复出厂设置
- Android Studio 引用jar和 so 文件
- 理解TimesTen中两个CheckPoint文件与Trans Log的关系及其原理
- MyEclipse快捷键大全
- struct dirent和DIR结构体
- 1.1.1 Linux是什么
- bzoj2811 apio2012 守卫 guard 贪心
- dwr3实现消息精确推送详细步骤