参考一下这个,这个是JAVA二分法的实现!int[] nums = {1,2,3,4,5,6,7,8,9,10};
int begin = 0;
int end = nums.length - 1;
int key = 10;
int index = -1;
int times = 0;
while(begin <= end){
times++;
//
int middle = ( begin + end ) / 2;
//
if(nums[middle] == key){
index = middle;
break;
}
if(nums[middle] < key){
begin = middle + 1;
}
if(nums[middle] > key){
end = middle - 1;
}
}
//count : 4 , index : 9
System.out.println("count : "+ times + " , index : " + index);
int begin = 0;
int end = nums.length - 1;
int key = 10;
int index = -1;
int times = 0;
while(begin <= end){
times++;
//
int middle = ( begin + end ) / 2;
//
if(nums[middle] == key){
index = middle;
break;
}
if(nums[middle] < key){
begin = middle + 1;
}
if(nums[middle] > key){
end = middle - 1;
}
}
//count : 4 , index : 9
System.out.println("count : "+ times + " , index : " + index);
解决方案 »
- 几个程序题目,给点思路或直接写个程序给我看看好吗。谢谢!坐等
- 从键盘输入数字和字母,统计各个字母数字出现的次数
- JTable问题~~~帮帮忙,困扰了几天~~~~
- 运行过程中停住不动了
- 讨论: interface 和 abstract class的使用目的是什么?
- 在Java能不能实现动态生成类?
- 各位Java高手,我初学Java,想了解一下Java是否支持COM的调用。
- 怎么取得文本框中第一行的内容?
- 谁能帮我把下面的程序加上注释说明一下程序运行的过程吗?谢谢.
- 很急的问题,怎么做两个最简单的APPLET程序。。。。。。。。。。。
- java实现FTP文件上传
- [求助]eclipse选项卡乱码,eclipse选项卡乱码
可以在while中的最后做判断是否取到值,没取到的话就返回索引
java只能返回一个值不过你可以返回个数组或者list
int j=array.length;
while(--j>=0){
if(array[j]<value)
return j;
}
return -1;
}
class tset{
int i ,j;
void foo(){
//.....
this.i = xxx;
this.j =yyy;
}
}从一个方法中获得(返回)多个值。
int i=0,j=array.length-1,mid;
//startEnd[0]表示开始位置,startEnd[1]表示结束位置
int[] startEnd=new int[2];
while(i<=j){
mid=i+j>>1;
if(array[mid]==value){
startEnd[0]=mid;
startEnd[1]=mid;
//找到,则开始位置=结束位置
return startEnd;
}else if(value<array[mid]){
if(mid-1<i){
startEnd[0]=mid-1;
startEnd[1]=mid;
return startEnd;
}else{
j=mid-1;
}
}else{
if(mid+1>j){
startEnd[0]=mid;
startEnd[1]=mid+1;
return startEnd;
}else{
i=mid+1;
}
}
}
return startEnd;
}