我有兩個有唯一值的排序數組(可以是ArrayLists,Collections或任何其他數據格式)。什麼是比較它們的最快方法?目標是刪除這兩個列表中的所有值。最快的數組比較
開始:
int [] a = {1, 2, 3, 4, 5};
int [] b = {1, 2, 3, 6, 7};
末有:
a = {4, 5}
b = {6, 7}
我有兩個有唯一值的排序數組(可以是ArrayLists,Collections或任何其他數據格式)。什麼是比較它們的最快方法?目標是刪除這兩個列表中的所有值。最快的數組比較
開始:
int [] a = {1, 2, 3, 4, 5};
int [] b = {1, 2, 3, 6, 7};
末有:
a = {4, 5}
b = {6, 7}
使用合併步驟在MergeSort
List list = Arrays.asList(a);
list.retainAll(b); //now list has {1, 2, 3}
List result = Arrays.asList(a).removeAll(list); //it now has 4, 5. For b do the same
這可能是最短的代碼,但它不可能是最有效的。 – jjnguy 2010-11-05 17:37:50
分析器說... ;-) – 2010-11-05 19:01:32
您可以輕鬆地爲O比較(n)的最壞情況 – Andrey 2010-11-05 17:25:48