滿足要求
【雜湊表】平均情況
【雜湊表】最糟情況
【陣列】
【鍊錶】
查詢o(1
)o(1)
o(1)
o (n
)o(n)
o(n)
o (1
)o(1)
o(1)
o (n
)o(n)
o(n)
插入o(1
)o(1)
o(1)
o (n
)o(n)
o(n)
o (n
)o(n)
o(n)
o (1
)o(1)
o(1)
刪除o(1
)o(1)
o(1)
o (n
)o(n)
o(n)
o (n
)o(n)
o(n)
o (1
)o(1)
o(1)
在平均情況下,雜湊表的查詢速度與陣列一樣快,而插入和刪除速度和鍊錶一樣快。在最糟情況下,雜湊表的速度很慢。因此,在使用雜湊表時,避開最糟情況至關重要。為此,需要避免衝突。
散 列表
包含的元
素數字置
總數
\frac
位置總數雜湊
表包含的
元素數
填裝因子大於1,需要在雜湊表中新增位置,被稱為調整長度
建立乙個更長的新陣列:通常將陣列增長一倍
使用函式hash將所有的元素都插入到這個新的雜湊表中。
填裝因子越低,發生衝突的可能性越小,雜湊表的效能越高。
(一旦填裝因子大於0.7,就調整雜湊表的長度)
良好的雜湊函式讓陣列中的值呈均勻分布。
糟糕的雜湊函式導致大量的衝突。
圖由節點(node)和邊(edge)組成。
使用圖來建立問題模型
使用廣度優先搜尋解決問題
雜湊表
graph=
graph[
"you"]=
["alice"
,"bob"
,"claire"
]graph[
"bob"]=
["anuj"
,"peggy"
]graph[
"alice"]=
["peggy"
]graph[
"claire"]=
["thom"
,"jonny"
]graph[
"anuj"]=
graph[
"penny"]=
graph[
"thom"]=
graph[
"jonny"]=
解決問題:
只支援兩種操作:入隊,出隊
建立乙個佇列
from collections import deque
# 建立乙個佇列
search_queue=deque(
)# 將你的鄰居新增到搜尋佇列中
search_queue+=graph[
"you"
]
判斷條件
def
person_is_true
(name)
:return name[-1
]=='m'
while search_queue:
#取出第乙個人
person=search_queue.popleft(
)if person_is_true(person)
:print
(person+
"is true!"
)return
true
else
: search_queue+=graph[person]
return
false
graph=
graph[
"you"]=
["alice"
,"bob"
,"claire"
]graph[
"bob"]=
["anuj"
,"peggy"
]graph[
"alice"]=
["peggy"
]graph[
"claire"]=
["thom"
,"jonny"
]graph[
"anuj"]=
graph[
"peggy"]=
graph[
"thom"]=
graph[
"jonny"]=
defperson_is_true
(name)
:return name[-1
]=='m'from collections import deque
defsearch
(name)
: search_queue=deque(
) search_queue+=graph[name]
searched=
while search_queue:
person=search_queue.popleft(
)if person not
in searched:
if person_is_true(person)
:print
(person+
" is true!"
)return
true
else
: search_queue+=graph[person]
return
false
search(
"you"
)
《演算法筆記》Day 2
全排列問題 include const int maxn 11 int n,p maxn hashtable maxn void generatep int index printf n return for int x 1 x n x int main void 推演 hashtable fals...
day2學習筆記
硬體 cpu,主機板,記憶體,電源 主機箱,硬碟,顯示卡,滑鼠 鍵盤 軟體軟體 開發 軟體開發 人機互動 圖形化介面,命令列 科學計算,資料處理,自動控制,計算機輔助設計,人工智慧 tab shift ctrl alt 空格 全選 ctrl a 複製 ctrl c 貼上 ctrl v 撤銷 ctrl...
學習筆記day2
1,上節內容回顧。cpu 用於運算。記憶體 臨時儲存一些資料。斷電即消失。硬碟 永久儲存所有的資料。作業系統 連線軟體與硬體的中介介質。編譯型 一次性,全部編譯成二進位制檔案。解釋型 當程式執行時,一行一行,位元組碼,二進位制。py2 重複,不規範 py3 優化,清新,簡單。encoding utf...