二分查找
来源:互联网 发布:建筑外观上色软件 编辑:程序博客网 时间:2024/06/04 00:23
public class BinarySearch{public static int search(int findKey, int[] target){int startPoint=0;int endPoint=target.length-1;while(startPoint<=endPoint){int mid=startPoint+(endPoint-startPoint)/2;if(findKey<target[mid]){endPoint=mid-1;}else if(findKey>target[mid]){startPoint=mid+1;}else {return mid;}}return -1;}//递归实现public static int rank(int findKey, int[] target){return rank(findKey, target,0,target.length-1);}private static int rank(int findKey, int[] target, int start, int end){//如果key存在于数组中,它的索引就不会大于endif(start>end){return -1;}int mid =start+(end-start)/2;if(findKey<target[mid]){return rank(findKey, target,start,mid-1);}else if(findKey>target[mid]){return rank(findKey, target,mid+1,end);}else {return mid;}}}
测试代码:
public void testBinarySearch(){int[] target=new int[]{1,3,5,7,10};System.out.println(BinarySearch.rank(10, target));System.out.println(BinarySearch.search(10, target));}
迭代可以实现的尾递归都可以实现!
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- java学习记录----面向对象(四)
- 响应式Web设计
- 使用ContentProvise获取APP中的数据
- UVA 129 困难的串Krypton Factor (回溯法)
- Linux中常用操作命令
- 二分查找
- Subtree with Maximum Average
- AngularJS实现原理
- java中的线程执行器总结!
- java读取properties文件内容
- *广播*
- Windows 下 Git(Tortoise)客户端使用
- 面向对象三大特性之多态(三)
- POJ 2106 Boolean Expressions(递归算法)