java二分法查找的递归算法如何实现 java二分法查找的递归算法如何实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.houlei.binarySearch;public class BinarySearch { public static void main(String[] args) { int [] array = {1,7,9,25,64,98}; int index = binarySearch(9,array,0,array.length); System.out.println("Index : "+index); } public static int binarySearch(int elem,int array [],int low,int high){ if(low>high)return -1; int mid = (low+high)/2; if(array[mid] == elem)return mid; if(array[mid] < elem) return binarySearch(elem,array,mid+1,high); if(array[mid] > elem) return binarySearch(elem, array, low, mid-1); return -1; }} 这个在百度或google上一搜就有了啊 package onlyfortest;import java.util.Arrays;public class BinarySearch { public BinarySearch() { } public static void main(String[] args){ int[] iArrays = new int[]{4,7,2,67,23,12,9,0,78,445,67}; Arrays.sort(iArrays); print(iArrays); System.out.println("the value is:"+binarySearch(78,iArrays,0,iArrays.length-1)); } public static int binarySearch(int elem,int[] arrays,int low,int high){ int ret = -1; if(low>high) return -1; int mid = (low+high)/2; System.out.println(mid+" "+arrays[mid]); if(arrays[mid]==elem){System.out.println("--"+mid); return mid;} if(arrays[mid]<elem) ret = binarySearch(elem,arrays,mid+1,high); if(arrays[mid]>elem) ret = binarySearch(elem,arrays,low,mid-1); System.out.println(mid); return ret; } static void print(int[] arrays){ for(int i=0;i<arrays.length;i++){ System.out.print(" "+arrays[i]); } System.out.println(); }} 参考JDK java.util.Arrays的二分法代码不就OK了 package com.sghlwxf.binarySoft;public class TestBinarySoft{ public static void main(String args[]){ int[] array= new int[]{9,5,12,43,13,76,4,10,23}; //定义要查找的数 int seek = 76; //定义下标 int index = 0; //定义起始位置 int start = 0; //定义结束位置 int end = 0; //定义计数器 while(true){ count ++; // int index = (start + end)/2; //为了防止start+end溢出,所以写成start+((end - start)/2) int index = start + ((end - start)/2); if(array[index]<seek){ start = index; }else if(array[index]>seek){ end = index; }else{ break; } } System.out.pritln("所运行的次数是"+count+"地址为"+index); }} 发个多线程问题,求解 一个关于运算符和基本选择结构的题 求解 Java中哪些类是不可以被继承的啊?高人给总结下吧.... 我发现synchronized可以写在static前也可以写在static后???? hippo cms 7 系统 页面加上".../W3C//DTD XHTML 1.0..."这样的声明eclipse运行慢,而且JSP解析变慢怎么解决啊,谢谢!!! 帮我讲讲组成优于继承 高内聚低耦合 要例子 java代码整理 请问JAVA如何发邮件 eclipse创建maven总是出错 JAVA打印等腰三角形 谁有lucene.jar的包给我发一个吧!!
int [] array = {1,7,9,25,64,98};
int index = binarySearch(9,array,0,array.length);
System.out.println("Index : "+index);
}
public static int binarySearch(int elem,int array [],int low,int high){
if(low>high)return -1;
int mid = (low+high)/2;
if(array[mid] == elem)return mid;
if(array[mid] < elem) return binarySearch(elem,array,mid+1,high);
if(array[mid] > elem) return binarySearch(elem, array, low, mid-1);
return -1;
}
}
public BinarySearch() {
}
public static void main(String[] args){
int[] iArrays = new int[]{4,7,2,67,23,12,9,0,78,445,67};
Arrays.sort(iArrays);
print(iArrays);
System.out.println("the value is:"+binarySearch(78,iArrays,0,iArrays.length-1));
}
public static int binarySearch(int elem,int[] arrays,int low,int high){
int ret = -1;
if(low>high) return -1;
int mid = (low+high)/2;
System.out.println(mid+" "+arrays[mid]);
if(arrays[mid]==elem){System.out.println("--"+mid); return mid;}
if(arrays[mid]<elem) ret = binarySearch(elem,arrays,mid+1,high);
if(arrays[mid]>elem) ret = binarySearch(elem,arrays,low,mid-1);
System.out.println(mid);
return ret;
}
static void print(int[] arrays){
for(int i=0;i<arrays.length;i++){
System.out.print(" "+arrays[i]);
}
System.out.println();
}
}
public static void main(String args[]){
int[] array= new int[]{9,5,12,43,13,76,4,10,23};
//定义要查找的数
int seek = 76;
//定义下标
int index = 0;
//定义起始位置
int start = 0;
//定义结束位置
int end = 0;
//定义计数器
while(true){
count ++;
// int index = (start + end)/2;
//为了防止start+end溢出,所以写成start+((end - start)/2)
int index = start + ((end - start)/2);
if(array[index]<seek){
start = index;
}else if(array[index]>seek){
end = index;
}else{
break;
}
}
System.out.pritln("所运行的次数是"+count+"地址为"+index);
}
}