數(shù)據(jù)結(jié)構(gòu)與算法是不是1對(duì)1的關(guān)系?
數(shù)據(jù)結(jié)果跟算法就不是一個(gè)概念。
數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)存放的方法,算法是處理問(wèn)題的方法。兩種沒(méi)有什么關(guān)系,一個(gè)數(shù)據(jù)結(jié)構(gòu)可以應(yīng)用于多個(gè)算法,一個(gè)算法也可以使用多種數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。
常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)
一般是根據(jù)算法來(lái)選擇合適的數(shù)據(jù)結(jié)構(gòu)。
?數(shù)組(Array)
?棧( Stack)
?隊(duì)列(Queue)
?鏈表( Linked List)
?樹(shù)( Tree)
?圖(Graph)
?堆(Heap)
?散列表(Hash)
那么可以根據(jù)算法來(lái)選擇合適的數(shù)據(jù)結(jié)構(gòu),
例如,
貪心算法可以選擇數(shù)組、列表。
排序算法可以使用數(shù)組、列表、鏈表、堆。
深度優(yōu)先算法比較喜歡用棧。
廣度優(yōu)先算法比較喜歡用列表。
如果想學(xué)習(xí)的話(huà),建議先學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》再學(xué)習(xí)《算法設(shè)計(jì)與分析》