二分搜索算法前提是被查找数组为有序 (即a有序)
public static int rank(int k,int[]a){
if(null==a){System.out.println("字符串为空");
return -1;
}
else{
int left=0;
int right=a.length-1;
while(left<=right){ //需左小于等于右。如果只小于的条件下:当被查找数组只有一个值,且正好等于待查找的数,则结果和期望值不符合
int mid=(left+right)/2;
if( k<a[mid])
right=mid-1;
else if (k>a[mid]) {
left=mid+1;
}else {
return k;
}
}
return -1;
}
}
public static void main(String[] args) {
int[]a={1,2,3,4,5};
// int[]a=null;
System.out.println(rank(1, a));
}