74. 使用雜湊表(Hash Table)存取元素的時間複雜度為何?
(A) O(1)
(B) O(log2 n)
(C) O(n log n)
(D) O(n2)

答案:登入後查看
統計: A(45), B(10), C(16), D(3), E(0) #3120487

詳解 (共 2 筆)

#5862132
在雜湊表中,元素的存取是通過計算元素的雜...
(共 264 字,隱藏中)
前往觀看
8
0
#6402662

好的,關於雜湊表 (Hash Table) 存取元素的時間複雜度,我們通常考慮的是平均情況下的效能。

一個理想的雜湊表,在沒有發生或很少發生碰撞(collision)的情況下:

  1. 計算雜湊值:這通常是一個常數時間的操作,與元素的數量無關。
  2. 根據雜湊值直接存取陣列或表格中的對應位置:這也是一個常數時間的操作。

因此,在平均情況下,使用雜湊表存取(插入、刪除、查找)元素的時間複雜度是 O(1),也就是常數時間。這意味著操作所需的時間不會隨著表中元素數量 n 的增加而顯著增加。

然而,在最差情況下,如果發生大量的雜湊碰撞(例如,所有的鍵都雜湊到同一個位置),並且碰撞處理機制效率不高(例如,鏈表中存放了所有元素),那麼存取一個元素可能需要遍歷鏈表中的所有元素,此時的時間複雜度會退化到 O(n),其中 n 是元素的數量。

但當問題沒有特別指明是「最差情況」時,通常指的是雜湊表的「平均情況」或「期望情況」下的時間複雜度,這也是雜湊表設計的主要優勢所在。

對照選項:
(A) O(1):常數時間。
(B) O(log2 n):對數時間,通常出現在二元搜尋樹等資料結構中。
(C) O(n log n):對數線性時間,常見於高效排序演算法。
(D) O(n2):平方時間,通常出現在較低效的排序演算法中。

考慮到雜湊表在平均情況下的典型效能優勢,存取元素的時間複雜度是 O(1)。

答案是 (A) O(1)。

1
0