二分查找
public class BinarySearch {
public static int rank(int key,int[] a){
int lo =0;
int hi=a.length-1;
while (lo<=hi){
//被寻找的键要么不存在,要么必然存在于a【ho--hi】值中
int mid= lo+(hi-lo)/2;
if (key<a[mid]) hi=mid-1;
else if(key>a[mid]) lo=mid+1;
else return mid;
}
return -1;
}
public static void main(String[] args) {
int i=0;
int result;
Scanner scanner = new Scanner(System.in);
System.out.println("输入键值");
int key = scanner.nextInt();
System.out.println("输入一个元素小于10的数组");
int[] a= new int[20];
while (i<15){
a[i] = scanner.nextInt();
i++;
}
result = BinarySearch.rank(key, a);
if (result<0)
System.out.println(key+"不存在");
else
System.out.println("所寻找键值在第"+(result+1)+"位上");
}
}


京公网安备 11010502036488号