二分搜索----JAVA
第一篇博客,写得不好请勿喷
二分搜索也是运用分治策略的典型例子
package test;
public class myTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int []test=new int []{1,2,3,4,5,6,7,8,9,19,45};//二分查找是一个有序数组哦
binarySearch(test,8,11);
}
public static int binarySearch(int []a,int x,int n){
int left=0;
int right=n-1;//X为查找元素,n为元素个数
while(left<=right){
/*当以中间元素为边界分成两边的边界没有重合或交叉时,就继续查找*/
int middle=(left+right)/2;
/*取中间点,这样可以加快速度,取middle为基准,每次改变边界后都要重新找基准*/
if(x==a[middle]){
/*只有三种情况:1.在基准左边 2.在基准右边 3.刚好是基准,基准不一定是中位数*/
System.out.println(middle);
return middle;
}
if(x>a[middle])
left=middle+1;
/*比基准大即在基准右边,左边可以不用查找了,改变左边界*/
else
right=middle-1;//在基准左边,左边界不变,改变右边界
}
return -1;
}
}
![查找元素8,最后输出对应元素下标](https://img-blog.csdnimg.cn/20181111210835847.JPG)