题目:已知一组排好序的数,快速查找该数列中说否存在某一元素。存在时返回所在位置,不存在时返回-1.
package hello;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int []a=new int [100];
int end =0;
//设置一个排序好的数组
for(int i=0;i<100;i++) {
if(i>0)
a[i]=i+a[i-1];
else a[i]=i;
}
Scanner s=new Scanner(System.in);
int in=s.nextInt();
end=Binary(a,0,a.length-1,in);
System.out.print(end);
}
//二分法搜索特定元素。
public static int Binary(int a[],int left,int right,int in) {
while(left<=right) {
int center=(left+right)/2;
if(in==a[center])
return center;
if(in<a[center]) {
right=center-1; **//这里绝对不能写成 right=center,要考虑仅剩最后一个的时候,循环是否能够正常退出**
}
else {
left=center+1;
}
}
return -1;
}
}
结果;
36
8