引言:笔者发现这段时间访问量最多的文章是二分查找法,由此可见其重要性
恰巧最近对递归算法比较感兴趣,所以就写了这篇文章,希望能到帮助大家更加深刻的理解到二分查找算法和递归算法的美妙之处
/**
* 递归二分查找法
*
* @param arr 需要进行查询操作的数组
* @param len 数组的长度
* @param num 需要在数组中查询的数据
* @return 返回结果
*/
public static Integer search(int[] arr,int lo,int hi,int num){
// 指针重合说明数组中没有num
if (lo <= hi){
int index = (lo+hi)/2;
if (arr[index] == num) {
return index;
// 当前基数大于num 基于折半后的前一位开始查询
}else if (arr[index] > num){
return search(arr,lo,index - 1,num);
// 当前基数小于num 基于基数的后一位开始查询
}else if (arr[index] < num){
return search(arr,index + 1,hi,num);
}
}
return -1;
}
具体实现步骤就不再一一注释了,两种算法的美妙之处请读者自行体会 ...
{\__/} {\__/}
( ·-·) (·-· )
/ >------------------------------------------------< \
| ☆ |
| ☆ |
| ★ |
| ☆ |
| ☆ |
| |
-------------------------------------