2021-02-08

数据结构二分法查找的递归算法和非递归算法以及总结;

//循环的形式,二分法查找算法
static int funBinSearch(int[]array,int data){
int low = 0;
int hight = array.length - 1;
while(low <= hight){
int mid = (low + hight)/2;
if(data === array[mid]){
return mid;
}else if(data < array[mid]){
hight = mid - 1;
}else{
low = mid + 1;
}
}
return -1;
}
二分查找递归实现方式;
使用递归方式实现一个二分法查找 left right middle = (left + right)/2;
使用二分法查找的前提是 必须是一个有序列的数组;
在使用二分法查找的时候,因为每一次用到了在哪个范围内查找。
所以在方法中不仅有带查找的key跟序列还要有分为的区间。
首先需要判断一下,左边的是否比右边的小;
求出中间的位置,拿中间的值跟key做比较,如果相等的话直接返回下标。
不然需要判断一下,key值有可能是在它的左区间还是右区间;
如果在左区间就是left middle - 1;
右区间就是middle + 1,right;
//递归实现二分法查找算法
static int recurBinSearch(int []array,int data,int low,int high){
if(low > high) return -1;
int middle = (low + high)/2;
if(array[middle] === data){
return middle;
}else if(data < array[middle]){
recurBinSearch(array,int data,low,middle - 1);
}else if(data > array[middle]){
recurBinSearch(array,int data,middle + 1,high);
}
}
以上是递归算法和非递归算法以及递归算法的实现步骤。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值