java实现二分查找
二分查找的对象是一个有序的数组,可以使用递归和非递归两种方式实现。
public class Test {
public static void main(String[] args) {
int [] array= {1,2,3,4,5,6,7,8,9,10,11,12};
int addr = binarySearch(array,7);
System.out.println(addr);
int sort = recursionSearch(array, 7, 0, array.length);
System.out.println(sort);
}private static int binarySearch(int [] array,int keyword){
int left = 0;
int right = array.length;
int middle = 0;
if(right==0){
return -1;
}
while(leftkeyword){
right = middle+1;
}else {
left = middle-1;
}}
return -1;
}private static int recursionSearch(int [] array,int keyword,int left,int right){//递归实现
if(left<=right){
int middle = (left+right)/2;
if(keyword==array[middle]){
return middle+1;
}else if(keyword>array[middle]){
return recursionSearch(array,keyword,middle+1,right);
}else {
return recursionSearch(array,keyword,left,middle-1);
}
}
return -1;
}
}
推荐阅读
- 第四天|第四天 - 知识点总结
- JavaScript习题(一)
- 面试官让我讲讲Java中的锁,我笑了..
- Leetcode(4)|Leetcode(4) - 寻找两个有序数组的中位数 - java版
- Java学习笔记|Java学习笔记 4 - 对象和类
- js日记|自定义封装实现Promise
- JavaScript|JavaScript 的new操作做了什么()
- Qt数据库应用之实现通用数据生成器
- MySQL实现JDBC详细讲解
- 牛客网|牛客网 Java专项练习 选择题错题 [1]