java二分法查找的递归算法如何实现

fengsheng168 2007-10-16 08:57:29
java二分法查找的递归算法如何实现。。。。。。。。。。。。。
...全文
1890 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jalant 2009-02-16
  • 打赏
  • 举报
回复
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);
}
}
Jalant 2009-02-16
  • 打赏
  • 举报
回复
df
fox_for_cloud 2009-02-06
  • 打赏
  • 举报
回复
参考JDK java.util.Arrays的二分法代码不就OK了
samzheng99 2008-05-31
  • 打赏
  • 举报
回复
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();
}
}
LuckilyYu 2007-10-17
  • 打赏
  • 举报
回复
这个在百度或google上一搜就有了啊
jinjieai4587 2007-10-17
  • 打赏
  • 举报
回复
对第二个7做和第一个7相同的操作了,往前就都往前,要么都往后排,折半查找不难写啊。
花点时间想想了。
fengsheng168 2007-10-16
  • 打赏
  • 举报
回复
在{1,7,7,9,25,64,98}查找7,怎么办??
fengsheng168 2007-10-16
  • 打赏
  • 举报
回复
2楼的朋友,在{1,7,7,9,25,64,98} 重值的情况怎么办???
冰思雨 2007-10-16
  • 打赏
  • 举报
回复
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;
}
}
冰思雨 2007-10-16
  • 打赏
  • 举报
回复
楼主举个具体点的例子伐,我都忘了什么是二分法了。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧