演算法學習筆記 DAY2

2021-10-03 04:55:46 字數 3183 閱讀 7967

滿足要求

【雜湊表】平均情況

【雜湊表】最糟情況

【陣列】

【鍊錶】

查詢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...