想象一下,你有一堆NSArrays的。數組都包含包裹在NSValues中的CGPoints。所有的元素都不是唯一的。所以某些元素可以出現在多個數組中。 將這些數組組合成單個數組的最快方式是什麼?這樣得到的數組只包含獨特的元素?近似運行比較
目前我正在做這樣的:
- 將每個陣列爲NSSet中使用
setByAddingObjectsFromArray
- 裝滿集的內容
結果數組另一種選擇是這樣的:
- 遍歷每個數組一次,並插入每個值int Ø一個NSDictionary(如果它不存在的話)
- 遍歷字典的鍵一次,每次插入結果數組
傳統的運行時分析說,第一個選項應與O(n log n)
規模,其中n是多少所有初始數組中的元素(遍歷所有元素,並將每個元素插入二進制搜索樹或類似的日誌時間)。對於第二種方法,運行時爲O(n)
,因爲哈希表中的查找和插入以分攤的恆定時間運行。然而,在閱讀了關於蘋果數據結構的一些信息之後,假設它們像傳統數據結構一樣行事似乎是愚蠢的。
的NSSet肯定是通過使用'hash'實施,並在使用'isEqual'上有衝突 –