java实现二分查找法
来源:互联网 发布:win7精简优化版 编辑:程序博客网 时间:2024/05/22 13:51
二分查找法:
我把他理解为折半排除法,就是把查找的范围分为两半,排除其中一半,把另一半再分成两半,再排除一半,再分两半,逐渐把范围缩小,直到找到需要查找的元素,或者判定没有这个元素。
使用二分查找的前提是被查找的是个有序的序列。
以整数型一维数组为例,查找数组中有没有某个数字
package Search;/**
*
*查找数组{1;3;5;7;9;11;13;15}查找数组中有没有数字8,如果有并返回它的索引
*普通的方法是遍历数组中所有的数来判断是否和8相等
*二分法则是先把数组分从中间分成两半,可以理解为划分成两个数组,按照原数组的排序方式,判断8的范围在那个数字里
*
*/
public class Search {
public static void main(String[] args){
int[] arr = new int[]{1,3,5,7,9,11,13,15};
int n=8;
//创建ChaZhao对象
ChaZhao ch=new ChaZhao();
//调用输出
System.out.println(ch.chaZhao(arr,n));
}
}
package Search;
public class ChaZhao {
//成员变量
//定义变量first表示数组的首索引
int first;
//定以变量end表示数组的尾索引
int end;
//定义变量mid表示数组的中间索引
int mid;
public int chaZhao(int[] arr,int n){
//把原数组的索引作为初始值赋给first,end;
first=0;
end=arr.length-1;
//while循环,如果first与end相对,已经排除到了最后一个数
while(first<end){
mid=(first+end)/2;
//先判断数组中间的数是否是n,如果相等直接返回mid
if(arr[mid]==n){
return mid;
}
//如果不等于中间的数,再判断n的范围,排除掉另一范围
else if(n<arr[mid]){
end=mid-1;
}
else{
first=mid+1;
}
}
//如果数组中查询不到则返回-1
return -1;
}
}
- java 实现二分查找法
- java 实现二分查找法
- java 实现二分查找法
- java 实现二分查找法
- 二分查找法-java实现
- java 实现二分查找法
- java 实现二分查找法
- 二分查找法---java实现
- java 实现二分查找法
- 二分查找法java实现
- Java实现二分查找法
- java实现二分查找法
- java 实现二分查找法
- Java实现 二分查找
- Java实现二分查找
- java实现二分查找
- java实现二分查找
- Java二分查找实现
- 山东2016年高考高校理工科录取人数统计
- MFC框架仿真---(2)动态创建
- Springmvc第三讲学习笔记,拦截器Interceptor的使用
- android Toast设置弹框大小
- 《深入理解java虚拟机》读书笔记——GC与内存分配策略
- java实现二分查找法
- JNI(java Native Interface)linux下 java调用本地c函数
- java日历类和包装类的注意点
- linux程序无源码调试的方法
- VS2013/MFC编程入门之一
- 对python字符串操作的几种方法(函数)
- SpringBoot配置属性中文释义MVC(一)
- android调用系统的安装方法出现ActivityNotFoundException的异常
- 素数与丑数