你下面引用的折半查找功能函数中key可以使任意进制的任意数,而你输入了07证明次数是8进制中的7,系统转换为10进制后在你的数组中找不到这个数从而返回-1;但你输入的08,8进制是不存在的,8进制每位最高位为7.
另,你有一行打错了;见线面//
public class ArrayDemo
{
public static void main(String[] args)
{
int[] arr = {1,2,4,6,8,34,67,98,123,454};
int index = getIndex(arr ,-1);
int index1= halfSearch(arr ,07);//为什么这个数字填07就可以通过,填08就会编译错误。
System.out.println("index="+index);
System.out.println("index1="+index1);
}
public static int getIndex(int[] arr,int key)
{
for(int i=0;i<arr.length-1;i++)
{
if(arr==key) //arr==key 这是查找key是否与arr中的元素相同
{
return i;
}
}
return -1;
}
public static int halfSearch(int[] arr,int key)
{
int min=0,max=arr.length,mid;
while(min<=max)
{
mid=(min+max)/2;
if(arr[mid]<key)
{
min=mid+1;
}
else if(arr[mid]>key)
{
max=mid-1;
}
else
return mid;
}
return -1;
}
}
这样把08改为34或者其他的就会得到相应的角标;希望对你有帮助 |