Java附带了Arrays工具类
arrays.sort (数据;
intindex=arrays.binary search (数据,3 );
你只需要直接调用函数。 索引是数组下标的值。
公共类er {
publicstaticvoidmain (字符串温暖棘球蚴args ) )。
int温暖的金针菇arr={ 0,1,2,3,4,5,6,7,8,9 };
int a=9;
//intm=Binsearch(arr,0,arr.length-1,a );
intm=Binsearch(arr,arr.length,a );
}
/*
//递归
staticintbinsearch(intarray温暖棘球蚴,int low,int high,int key ) )。
{
if(low=high ) )。
{
intmid=(lowhigh )/2;
if(key==Array[mid] ) )。
返回mid;
ELSEif(key
//low和high
返回二进制文件(array,low,mid-1,key );
(else if (密钥阵列(mid ) ) ) ) ) ) ) ) ) ) ) ) )。
返回二进制文件(array,mid 1,high,key );
}
}
/*
//递归
publicstaticintbinsearch(int温暖棘球蚴arr,int begin,int end,int a ) {
是if(begin=end )
{
intmid=(Beginend )/2;
if(ARR[mid]==a ) {
//system.out.println('1);
返回mid;
}
ELSEif(ARR[mid]a ) {
返回边界(arr,mid 1,end,a );
//system.out.println (2' mid ' ' end );
}
ELSEif(ARR[mid]a ) {
返回边界(arr,begin,mid-1,a );
//system.out.println (3' begin ' ' mid );
}
}
}
//普通循环
publicstaticintbinsearch(int温暖棘球蚴a,int len,int goal ) )。
{
int low=0;
int high=len -1;
wile(low=high ) )。
{
intmiddle=(high-low )/2 low; //直接使用(high low )/2可能会溢出
if(a[middle]==goal () () ) ) ) ) ) ) )。
返回中间;
//在左半部分
elseif(a[middle]goal ) )。
high=middle - 1;
//在右半部分
else
low=middle 1;
}
//未找到
}
}