數據結構是對在計算機內存中(有時在磁盤中)的數據的一種安排,數據結構包括數組、鏈表、棧、二叉樹、哈希表等等,算法對這些結構中的數據進行各類處理,例如查找一條特殊的數據或者對數據進行排序。java
還能夠從數據結構的優缺點來看待數據結構;程序員
數據結構 | 優勢 | 缺點 |
---|---|---|
數組 | 插入快,若是知道下標能夠快速的存取 | 查找慢、刪除慢、大小固定 |
有序數組 | 比無序數組查找快 | 刪除和插入慢、大小固定 |
棧 | 提供後進先出方式存取 | 存取其餘項很慢 |
隊列 | 提供先進先出方式存取 | 存取其餘項很慢 |
鏈表 | 插入快、刪除快 | 查找慢 |
二叉樹 | 查找、插入、刪除都快(若是樹保持平衡) | 刪除算法複雜 |
紅-黑樹 | 查找、插入、刪除都快(樹老是平衡的) | 算法複雜 |
2-3-4樹 | 查找、插入、刪除都快(樹老是平衡的、相似的樹對磁盤存儲有用) | 算法複雜 |
哈希表 | 若是關鍵字已知則存取極快,插入快 | 刪除慢,若是不知道關鍵字則存取很慢 |
堆 | 插入刪除快,堆最大數據項的存取很快 | 對其餘數據存取慢 |
圖 | 對現實世界建模 | 有些算法慢且複雜 |
java.util 包中包含有諸如向量(一個可擴充的數組)、棧、庫和哈希表等類型的數據結構,可是是封裝好的,咱們應該學習實現的細節,而不該該只是會使用別人的類庫。web
數據結構是指數據在計算機內存空間中或磁盤中的組織形式。算法
正確的選擇數據結構會使程序的效率大大提升。數據庫
數據結構的例子有數組、棧和鏈表。數組
算法是完成特定任務的過程。數據結構
在 Java中算法常常經過類的方式實現。svg