二分查找的递归和非递归实现
2016-03-03 11:03
381 查看
最近在复习基础知识,下面是二分查找算法的递归和非递归实现:
package sortandsearch; /** *@Description:<p>二分查找的递归和非递归算法</p> *@author 王旭 *@time 2016-3-3 上午10:36:29 */ public class BinarySearch { //非递归 public static int binSearch1(int[] arr, int target) { if(arr == null || arr.length == 0) return -1; int left = 0, right = arr.length - 1; while(left <= right) { int mid = (left + right) / 2; if(arr[mid] == target) { return mid; } if(arr[mid] < target) { left = mid + 1; } if(arr[mid] > target) { right = mid - 1; } } return -1; } //递归 public static int binSearch2(int[] arr, int target, int left, int right) { if(arr == null || arr.length == 0) return -1; if(left > right) { return -1; } int mid = (left + right) / 2; if(arr[mid] == target) { return mid; } if(arr[mid] > target) { return binSearch2(arr, target, left, right - 1); } if(arr[mid] < target) { return binSearch2(arr, target, left + 1, right); } return -1; } public static void main(String[] args) { int[] testArr = new int[]{1,2,3,5,8,9,12,13,15,19,20,30,50,89,101}; System.out.println(binSearch1(testArr, 13)); System.out.println(binSearch2(testArr, 101, 0, 14)); } }
相关文章推荐
- ie设置ActiveX控件不提示
- NSString的各种操作,拼接、搜索、截取
- Swift2.0(6)结构体类型&枚举类型
- DexClassLoader简介
- delete与delete[]
- 【leetcode】【82】Remove Duplicates from Sorted List II
- velocity 是如何实现内省 屏蔽反射的
- C++在类内定义模板函数
- JS动态增删表格行的方法
- 入侵分析十诫
- android 开发技巧(13)--处理空列表
- 蓝桥杯往届试题——芯片测试(数学问题)
- Volatile关键词深度剖析
- Thymeleaf
- iOS UIAppearance使用详解
- MySQL之设置数据库之间主主同步---主主同步,相互备份
- JAVA中有关逆变和协变类型的详解
- Swift2.0(5)元组类型&数组类型&字典类型
- 递归
- Java多态