我正在刷新算法和數據結構,並且有幾個問題以及我希望您檢查的語句。 O(1)(size,get,set,...),O(n) - 添加操作。
LinkedList - 所有操作O(1)(包括add()),除了檢索第n個元素是O(n)。我假設size()操作也在O(1)中運行,對吧?設置時間和速度的複雜性
TreeSet - 所有操作O(lg(N))。 size()操作需要O(lg(n)),對嗎?
HashSet - 所有操作O(1)如果使用了正確的散列函數。
HashMap - 所有操作O(1),與HashSet同源。
任何進一步的解釋是非常受歡迎的。先謝謝你。
如果你有這樣的魔力HashSet的,爲什麼你需要的ArrayList? –
@Stas:因爲一個List和一個Set不是一回事,而且因爲常數因素仍然可能有很大的不同...... –
@Stas:這個命令只能讓你知道操作是如何擴展的。它不會告訴你這個因素,例如HashSet可能比ArrayList慢許多倍,並且沒有get()/ set()方法。 –