public class Bubble { public static void main(String[] args) {
Bubble b = new Bubble();
int a[] = {1,4,2,6,9,5,3,7,8};
b.binarySerach(a, 9);
}
public static void binarySerach(int a[], int n){
int startno = 0;
int lastno = a.length-1;
int middle = (startno+lastno)/2;
while(startno<lastno){
if(middle == n){
System.out.print(a[middle]);
break;
}else if(middle > n){
lastno = middle-1;
}else if(middle < n){
startno = middle+1;
}
middle = (startno+lastno)/2;
}
}}什么原因呀,没有打印出结果
Bubble b = new Bubble();
int a[] = {1,4,2,6,9,5,3,7,8};
b.binarySerach(a, 9);
}
public static void binarySerach(int a[], int n){
int startno = 0;
int lastno = a.length-1;
int middle = (startno+lastno)/2;
while(startno<lastno){
if(middle == n){
System.out.print(a[middle]);
break;
}else if(middle > n){
lastno = middle-1;
}else if(middle < n){
startno = middle+1;
}
middle = (startno+lastno)/2;
}
}}什么原因呀,没有打印出结果
if(middle == n){
System.out.print(a[middle]);
break;
很明显,middle == 9时输出 a[9]
你是数组才几个数啊?如果你要输出a[9];
何必这样拐个大弯呢
if(a[middle] == n){
System.out.print(a[middle]);
break;
}
二分查找import java.util.Arrays;public class Bubble { public static void main(String[] args) {
Bubble b = new Bubble();
int a[] = { 1, 4, 2, 6, 9, 5, 3, 7, 8 };
b.binarySerach(a, 3);
b.binarySerach(a, 12);
} public void binarySerach(int a[], int n) {
Arrays.sort(a);//sort
int startno = 0;
int lastno = a.length - 1;
int middle = (startno + lastno) / 2; while (startno < lastno) {
if (a[middle] == n) {//element of array a[]
System.out.println("find num " + n);
return;
} else if (middle > n) {
lastno = middle - 1;
} else if (middle < n) {
startno = middle + 1;
}
middle = (startno + lastno) / 2;
}
System.out.println("can't find num " + n);
}}find num 3
can't find num 12
A b = new A();
int a[] = { 1, 4, 2, 16, 9, 5, 3, 7, 8 };
b.binarySerach(a, 16);
b.binarySerach(a, 12);
} public void binarySerach(int a[], int n) {
Arrays.sort(a);//sort
int startno = 0;
int lastno = a.length - 1;
int middle = (startno + lastno); while (startno <= lastno) {//这里少了一次循环
if (a[middle] == n) {//element of array a[]
System.out.println("find num " + n);
return;
} else if (a[middle] > n) {//这里应比较的是数组下表为middle的元素和要查找的数
lastno = middle - 1;
} else if (a[middle] < n) {//这里应比较的是数组下表为middle的元素和要查找的数
startno = middle + 1;
}
middle = (startno + lastno) / 2;
}
System.out.println("can't find num " + n);
}}
http://blog.csdn.net/wangdong20/article/details/6991070