二分查找的递归和非递归实现
最近在复习基础知识,下面是二分查找算法的递归和非递归实现:
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)); } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112835275-168981902.gif)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112841431-2047172832.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112847494-1544911856.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112904385-918783221.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111120143119-1302805212.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112856369-1466718103.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112830416-794416355.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111113919510-1155220901.gif)