二分法,递归和非递归方式 实现(Java)
2016-08-03 22:42
381 查看
//时间复杂度:O(logn)
package binarySearch; public class BinarySearch { //非递归 public static int binarySearch(int[] a,int goal){ int high = a.length - 1; int low = 0; int mid = 0; while(low <= high){ mid = (high - low)/2+low;//(high+low)/2容易溢出 if(a[mid] == goal){ return mid; } else if(a[mid] < goal){ low = mid +1; } else high = mid - 1; } return -1; } //递归 public static int binarySearch(int[] a,int low,int high,int goal){ while(low <= high){ int mid = (high - low)/2 + low; if(a[mid] == goal){ return mid; } else if(a[mid] < goal){ return binarySearch(a,mid+1,high,goal); } else return binarySearch(a,low,mid-1,goal); } return -1; } public static void main(String[] args) { // TODO Auto-generated method stub int[] a = {1,2,3,4,5,6,7,8,9}; System.out.println(binarySearch(a,0,a.length - 1,2)); } }
相关文章推荐
- 指定文件目录下搜索关键字(Java实现,递归方式)
- 递归和非递归两种方式实现二分法查找(java)
- 用递归的方式实现文件内容搜索(java)
- java实现递归删除目录及目录下所有文件,递归和非递归方式都有
- java非递归方式实现快速排序
- Java方式实现二叉树的前中后序遍历的递归及非递归算法
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- java使用递归,非递归方式实现二叉树的三种常见遍历方式
- java实现 二分查找 非递归与递归2种方式
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- java实现二叉树的递归方式遍历
- 递归方式实现斐波那契数列&汉诺塔(java)
- java使用递归,非递归方式实现二叉树的三种常见遍历方式
- Java实现递归经典案例――三角数字的多种实现方式
- 递归和迭代两种方式实现归并排序(Java版)
- 算法:二叉树的先序遍历、中序遍历、后序遍历(递归及非递归方式)的java代码实现
- 递归与非递归方式判断二叉树是否对称&& 按行打印二叉树【java实现】
- 算法:二叉树的先(根)序遍历、中(根)序遍历、后(根)序遍历(递归及压栈出栈实现的非递归方式)的java代码实现
- Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例
- JAVA 采用递归方式实现求数组最大值