import java.util.*;
public class Test2
{ /**
 * @param args
 */
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] arr = {1,3,4,5,2,3,4,87,21};
Arrays.sort(arr);
for(int x:arr)
System.out.print(x+" ");
System.out.println();
int num = Arrays.binarySearch(arr,4);
System.out.println(num);
}}

解决方案 »

  1.   

    public static int binarySearch(int[] a,int key)
    使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。
    必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。
    如果没有对数组进行排序,则结果是不明确的。
    如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
      

  2.   

    不是我翻译的- -#
    中文API上直接复制下来的..
      

  3.   

    排序后
    1,2,3,3,4,4,5,21,87
    第一个4出现在arr[4],哪里不对?
      

  4.   

    这段代码的运行结果是4是对的。
    你好好的看看API.
    public static int binarySearch(int[] a,int key) 这里的返回值是一个索引。第一个"4"在这个经排序后的数组中的索引不就是4吗?API中是这么说的:返回:
        搜索键的索引,如果它包含在列表中;否则返回 (-(插入点) - 1)。
    插入点 被定义为将键插入列表的那一点:即第一个大于此键的元素索引,
    如果列表中的所有元素都小于指定的键,则为 list.size()。注意,这
    保证了当且仅当此键被找到时,返回的值将 >= 0 。