String[] array1;
array1 = new String[] { "a", "e", "c", "d", "b" };
System.out.println(Arrays.toString(array1));
System.out.println(array1[1]);
System.out.println(Arrays.binarySearch(array1, "e"));
输出:
[a, e, c, d, b]
e
-6
疑问:e的index为什么是-6而不是1呢。
今天发现我们的软件有一个Bug,让同事检查,后来,他给我了一段代码,让我看看: int[] a = new int[]{128,129}; int pos = Arrays.binarySearch(a,128); System.out.println("Pos="+pos); pos = Arrays.binarySearch(a,129); System.out.println("Pos="+pos); int[] b = new int[]{129,128}; pos = Arrays.binarySearch(b,128); System.out.println("Pos="+pos); pos = Arrays.binarySearch(b,129); System.out.println("Pos="+pos); 执行结果为: Pos=0 Pos=1 Pos=-1 Pos=0 呵呵,有点奇怪,查找JDK API(现在有了中文版了,爽),描述如下: public static int binarySearch(int[] a, int key) 使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。如果没有对数组进行排序,则结果是不明确的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。 原来是需要先进行排序,又长知识了,呵呵。
http://blog.sina.com.cn/s/blog_6da5ef730100mfez.html
是啊,涨知识呢,看来刚学还得看些文档之类的东西。
我也涨知识了
binearySearch要先排序的
长知识了
这个确实不错,转走保存下来,以后用。
mark !
这个被称为二分法,楼主你可以去看一下源代码,里面两个参数的比较的部分写的是判断大于或者判断小于。
二分法当然是针对有序数组的了。
二分法是什么,请百度。
涨知识了!学习了!
binarySearch需要先进行排序
API是最好的选择