递归和非递归实现二分查找
来源:互联网 发布:电煤指标数据代码 编辑:程序博客网 时间:2024/05/18 02:05
- public class Find
- {
- //使用非递归方法实现
- public static int binFind1(int[] orderedArr, int numFind)
- {
- int hi = 0, mid=0,lo = 0;
- hi = orderedArr.length - 1;
- lo = 0;
- while(lo<=hi)
- {
- mid = (hi + lo) / 2;
- if (numFind == orderedArr[mid])
- {
- //直接返回结束当前运行方法
- return (hi + lo) / 2;
- }
- if (numFind > orderedArr[mid])
- {
- //改变下角标
- //【注】理解为什么+1,因为这样的二分之后改变了首部
- lo = mid+1;
- }
- if(numFind<orderedArr[mid])
- {
- //改变上角标
- //【注】理解为什么-1,因为这样的二分之后改变了尾部
- hi=mid-1;
- }
- }
- //未找到
- return -1;
- }
- //使用递归方法实现:
- public static int binFind2(int arr[],int lo/*七点*/,int hi/*终点*/,int num/*要查找的数字*/)
- {
- if(lo<=hi)//注意这里的条件是<=
- {
- int mid = (lo+hi)/2;
- if(num<arr[mid])
- {
- return binFind2(arr,lo,mid - 1,num);
- }
- if(num>arr[mid])
- {
- return binFind2(arr,mid +1,hi,num);
- }
- if(arr[mid]==num)
- {
- return mid;
- }
- }
- return -1;//未找到
- }
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
//测试用例
- int[] orderedArr = {1,2,3,4,6,7,8};
- System.out.println(binFind2(orderedArr,0,orderedArr.length,5));
- }
- }
阅读全文
0 0
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 递归和非递归实现二分查找
- 二分递归查找和非递归查找
- 二分查找(非递归实现和递归实现)
- 二分查找算法递归和非递归实现(C++)
- 一个递归和非递归实现二分查找的代码
- C++数据结构--二分查找的递归和非递归实现
- 分别使用递归和非递归实现二分查找算法
- c++二分查找实现(非递归和递归方式)
- 二分查找法的递归和非递归实现
- 二分查找算法递归和非递归实现
- c++实现二分查找 递归和非递归
- 二分查找的非递归和递归例程实现
- 二分查找的递归和非递归实现
- 二分查找的递归和非递归实现
- 数据库基础
- P2P互联网金融平台项目SSM+Redis+Mysql+Bootstrap+JQuery
- PAT——1031. 查验身份证
- 关于使用Intent协议在webview中跳转三方app
- selenium2java通过请求接口获取并向浏览器插入cookies
- 递归和非递归实现二分查找
- Centos查看端口占用情况和开启端口命令
- 在linux下安装MongoDB
- python:BeautifulSoup 模块使用指南
- Web Service实践之REST vs RPC
- iOS Crash文件分析
- 微信小程序--地图regionchange事件频繁触发导致崩溃
- Python自动化第二周之数据模块
- struts2需要的几个jar包 Hibernate 常用jar包 操作数据库的jar等jar包用途介绍