2013-06-04 57 views
0

假設我有以下數組。高效的ay來處理數組

陣列1:城市列表(可能有一些項目是一樣的陣列2) 陣列2:城市​​列表

我要輸出以下列表:

  1. 城市列表僅在只在兩個陣列城市陣列2
  2. 列表城市陣列1
  3. 列表

完成1-3的最有效方法是什麼?

我想在每個數組中存儲城市的名稱,然後做一個foreach比較兩個。

+0

存在的測試最好用哈希對象/字典完成。 – Tim

+0

**設置交叉點**是你正在嘗試做的事項。你提出的建議將會完成這項工作,但這不是最有效的方法。 – Nuclearman

回答

0

如果你的陣列進行分選,可以並行遍歷它們:

index_1 = 0 // assuming zero based indexing 
index_2 = 0 

repeat the follwoing loop: 
if(index_0 is out of range) 
    count (remaining) cities from array 2 
else if(index_1 is out of range) 
    count (remaining) cities from array 2 
else { 
a = get city from array 1 with the index_1 
b = get city from array 2 with the index_2 
if(a = b) { 
    increment no. of cities in both arrays 
    increment both indices 
} 
else if(a < b) 
    count cities from array 1 until city from array 2 is b, update indices 
else 
    count cities from array 2 until city from array 1 is a, update indices 
} 
end loop 

這應該在數組大小的線性時間做這項工作。

如果數組未按排序算法排序,

如果數組很小,請不要打擾,請使用帶有嵌套循環的蠻力方法。