您的位置:首页 > 编程语言 > Java开发

java递归实现二分查找算法

2016-07-14 17:30 681 查看
只做知识点记录,不做别的.

package test;

public class Bipartite {

public static void main(String[] args) {

int result = 0;
try {
result = bipartiteFind(16,arrs);
} catch (Exception e) {
e.printStackTrace();
}
if(result != -1){

System.out.println("index:"+result+"  值:"+arrs[result]);
}else{
System.err.println("没有找到该数据");
}

}

static int[] arrs = new int[]{1,2,3,4,5,7,8,9,10,12,13,15,16};

/**
* 二分查找
* @return
* @throws Exception
*/
static int bipartiteFind(int x,int[] arr) throws Exception{
if(arr == null || arr.length<=0)
throw new Exception("数组不能为空,长度不能小于等0");

return find(arr,0,arrs.length,x);
}

private static int find(int arrs[],int start,int end,int x){
if(start > end)
return -1;

int index = (end-start) / 2 + start;
if(arrs[index] == x)
return index;
else if(arrs[index] >  x)
return find(arrs,start,index-1,x);

else if(arrs[index] < x)
return find(arrs,index+1,end,x);

return -1;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分查找 递归 java