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