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