二分法(java)
程序员文章站
2024-03-16 09:00:46
...
最先接触到算法神奇之处的就是二分法,所以打算动手写一下,并整理思路
代码
package com.example.eurekaribbonclient.test;
/**
* @ClassName test_3
* @Description TODO
* @Author Mr.G
* @Date 2018/9/18 17:47
* @Version 1.0
*/
public class test_3 {
public static void main(String[] args){
int[] arry={1,3,6,8,9,10,11,35,54,77,102};
int flag=BinarySearch(54,arry);
System.out.println(flag);
}
public static int BinarySearch(int key,int[] arry){
int left=0;
int right=arry.length-1;
while(left<right){
int mid=(left+right)/2;
if(key<arry[mid]){
right=mid-1;
}else if(key>arry[mid]){
left=mid+1;
}else{
return mid;
}
}
return -1;
}
}
代码很简单,思路就是不断取中间值,和key比较,然后用递归的思想不断推进,直到找到结果,如果没找到,就返回-1;
最差情况,是取log2N次此时时间复杂度是o(logn),最好的情况当然是一次取到,注意,二分法是对一组有序的数,如果是无序的需要先排序
上一篇: 二分查找法(java实现)
下一篇: 二分查找法-JAVA源码