程序設計 = 數據結構 + 算法算法
這是一個著名的公式,說明這兩個方面是很是重要的。在Java中,集合實現了多種數據結構,開發者使用就能夠了。可是,瞭解數據結構,有助於理解源碼,進而能夠爲不一樣的程序選擇合適的數據結構。數組
1、數據結構數據結構
數據結構是相互之間存在一種或多種特定關係的數據元素的集合。學習
主要有兩種結構:一是邏輯結構;二是物理結構。設計
一、數組blog
線性表的順序存儲結構的實現方式。排序
二、鏈表隊列
鏈式存儲結構有如下幾種:單鏈表、靜態鏈表、循環鏈表、雙向鏈表。開發
三、棧源碼
限定僅在表尾進行插入和刪除的線性表。想象槍的子彈殼。
四、隊列
只容許在一端進行插入操做,而在另外一端進行刪除的線性表。
五、串
好比Java中String類。KMP算法
2、算法
算法是解決特定問題求解步驟的描述,在計算機中爲指令的有限序列,而且每條指令表示一個或多個操做。
算法運行的兩個標準:時間複雜度和空間複雜度。
一、查找
二、排序
學習書籍:
一、大話數據結構
2.《數據結構與算法分析--Java語言描述》
3.《數據結構和抽象問題求解--Java語言描述》
4.《算法導論》