关于数组的查询问题?请教!

public class Display {

public static void main(String[] args) {
int a[]={55,37,33,22,36};
//Arrays.sort(a);
int index=Arrays.binarySearch(a,55);
System.out.println(index);
for(int i=0;i<a.length;i++){
//System.out.println(a[i]);
}

}

}


以上数组查询方法  如果不将数组排序难道就不能查询么?我注释掉排序方法后,只有第一个元素“22”可以正确查询,这是为什么呢?查询其他元素就和数组里元素的索引位置不一样了。  还有个问题是,假如一个数组中有多个相同的元素,假如查询此元素,它的索引位置应该怎么定呢?如:
public class Display {

public static void main(String[] args) {
int a[]={55,33,33,23,33};
Arrays.sort(a);
int index=Arrays.binarySearch(a,33);
System.out.println(index);
for(int i=0;i<a.length;i++){
//System.out.println(a[i]);
}

}

}
像这样的程序,如果排序以后,应该是int a[]={23,33,33,33,55} 这样的情况,如果查询后,输出元素“33”的索引位置为什么是2呢?为什么不是1或3呢?

你可能感兴趣的:(jdk,算法)