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