Java數(shù)據(jù)結(jié)構(gòu)和算法介紹了計(jì)算機(jī)編程中使用的數(shù)據(jù)結(jié)構(gòu)和算法,對(duì)于在計(jì)算機(jī)應(yīng)用中如何操作和管理數(shù)據(jù)以取得最優(yōu)性能提供了深入淺出的講解。全書(shū)共分為15章,分別講述了基本概念、數(shù)組、簡(jiǎn)單排序、堆和隊(duì)列、鏈表、遞歸、進(jìn)階排序、二叉樹(shù)、紅黑樹(shù)、哈希表及圖形等知識(shí)。附錄中則提供了運(yùn)行專題Applet和例程、相關(guān)書(shū)籍和問(wèn)題解答。本書(shū)提供了學(xué)完一門(mén)編程語(yǔ)言后進(jìn)一步需要知道的知識(shí)。本書(shū)所涵蓋的內(nèi)容通常作為大學(xué)或?qū)W院中計(jì)算機(jī)系二年級(jí)的課程,在學(xué)生掌握了編程的基礎(chǔ)后才開(kāi)始本書(shū)的學(xué)習(xí)。
java數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí)總結(jié)
各個(gè)線性類型數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)以及使用場(chǎng)景
數(shù)組:
特點(diǎn):元素在內(nèi)存中線性連續(xù)存儲(chǔ),可以根據(jù)下標(biāo)快速訪問(wèn)數(shù)組元素,但是增刪效率不是很高,每一次增加或刪除元素都需要
大量移動(dòng)元素空出插入位置或者填補(bǔ)刪除元素的位置。
使用場(chǎng)景:頻繁查詢,很少進(jìn)行增加或刪除操作的情況
鏈表:
特點(diǎn):存儲(chǔ)可以不連貫,根據(jù)索引將數(shù)據(jù)聯(lián)系起來(lái),當(dāng)查詢?cè)氐臅r(shí)候需要從開(kāi)頭開(kāi)始去查詢,所以效率比較低,然而增加或刪除
元素的時(shí)候只需要修改索引就可以了。
使用場(chǎng)景:少查詢,需要頻繁插入或刪除的情況
隊(duì)列:
特點(diǎn):先進(jìn)先出(FIFO/fisrt in first out),如同一個(gè)單向隧道,先進(jìn)的車先出。
使用場(chǎng)景:多線程的阻塞隊(duì)列管理非常有用
棧:
特點(diǎn):后進(jìn)先出(LIFO/last in first out),就像一個(gè)箱子,先放進(jìn)去的東西在底部,需要先拿出上面的東西,下面的東西才能拿出來(lái)
使用場(chǎng)景:實(shí)現(xiàn)遞歸以及表達(dá)式計(jì)算,android運(yùn)用棧的原理實(shí)現(xiàn)back stack
5.數(shù)組與鏈表的區(qū)別
(1)數(shù)組連續(xù),鏈表不連續(xù)
(2)數(shù)組內(nèi)存靜態(tài)分配,鏈表內(nèi)存動(dòng)態(tài)分配
(3)數(shù)組查詢時(shí)間復(fù)雜度為O(1),鏈表為0(n)
(4)數(shù)組增加刪除的時(shí)間復(fù)雜度為O(n),鏈表為O(1)
(5)數(shù)組從棧中分配空間,鏈表從堆中分配空間
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版