array专题三:Arrays类操纵java中的数组

使用java.util.Arrays类排序和查找数组

1.以下代码演示程序初始化一个整数数组然后调用Arrays.sort升序排序那个数组。

   1.
   2.     import java.util.Arrays;
   3.
   4.     public class ArrayDemo1 {
   5.         public static void main(String args[]) {
   6.             int vec[] = {37, 47, 23, -5, 19, 56};
   7.             Arrays.sort(vec);
   8.             for (int i = 0; i < vec.length; i++) {
   9.                 System.out.println(vec[i]);
  10.             }
  11.         }
  12.     }


2.类似的,你可以在排完序的数组上进行二分法查找:

   1.
   2.     import java.util.Arrays;
   3.
   4.     public class ArrayDemo2 {
   5.         public static void main(String args[]) {
   6.             int vec[] = {-5, 19, 23, 37, 47, 56};
   7.             int slot = Arrays.binarySearch(vec, 35);
   8.             slot = -(slot + 1);
   9.             System.out.println("insertion point = " + slot);
  10.         }
  11.     }


这个程序有个微妙的概念,如果二分法查找失败它将返回:

    -(insertion point) - 1

这个演示程序以参数35调用查找方法,而那个参数在数组中不存在,方法返回值-4,如果这个值加一再

取其负数就得到3,这就是35应该被插入到数组中的位置,换言之,值-5, 19和23在数组中占据的位置是0

,1和2。因此值35应该在索引3的位置,而37, 47以及56顺延。搜索方法并不进行实际的插入操作而只是

指出应该在何处插入。


参考资料:
JDK核心API——操纵java中的数组
http://java.ccidnet.com/art/3737/20060627/589715_1.html