資料結構與演算法--基礎入門概念
阿新 • • 發佈:2018-11-08
資料結構與演算法--基礎入門概念
一: 資料結構
1:資料的層次劃分
1:資料型別
一個類(相當於Java中的class)
2:資料元素
資料元素屬於一種資料型別
3:資料物件
資料型別的例項物件
4:資料項
資料型別的屬性,資料型別的例項物件的屬性,也是一種資料元素
5:借圖輔助理解
2:基於資料的資料結構
1: 物理層的儲存結構
- 對於計算機,只能識別,儲存,計算二進位制的"資料";應用層資料資料和程式指令,對其來說沒有區別;
- 物理層面來說,大致上有 順序儲存 和 鏈式儲存 兩種;與之對應的是"陣列","連結串列"概念;當然,陣列需要連續的空間,但是訪問效能高,空間利用率低;連結串列可以使用零碎的記憶體空間,空間利用率高,訪問效能總體不如陣列;
2:應用層的邏輯關係結構
資料結構的應用層的邏輯關係結構,從應用層來說 ,基本都是基於"陣列"和"連結串列"兩種基本型別資料結構而衍生的;但是存在一種邏輯上的"集合結構 "較為特殊,可參考後續詳解;
如:
線性結構
可以當成"陣列"理解
樹形結構
可以當成"連結串列"理解
圖形結構
可以當成複雜的"連結串列"理解
集合結構(相對特殊)
集合結構可以理解成資料元素中的***資料子元素***之間沒有顯示的邏輯關係,一般相互訪問時,需要通過父級層面去訪問;
如何評價一個數據結構的優劣?
資料結構的優劣的評價必須配合演算法一起應用,才能說其優與劣;
二:演算法
演算法是依賴資料結構的,以及其實際中的特性,才能最大程度利用各種資源,達到最好的效果;
演算法的兩大指標
實際情況是,根據具體的場景,需要組合使用兩大指標,而採取某種策略;是時間換空間還是空間換時間等;
時間複雜度,隨著資料量的增加,所耗費的時間;
- 線型(不好)
- 指數型(最差)
- 對數型(較好)
空間複雜度,隨著資料量的增加,所消耗的空間;
- 線型(不好)
- 指數型(最差)
- 對數型(較好)
三:常見的基礎的演算法與資料結構
複雜的演算法和資料結構,通常都是由基本的資料結構和演算法組成;
排序(演算法)
冒泡,快排,希爾排序,堆排等;
陣列(資料結構)
連結串列(資料結構)
單鏈表,雙向連結串列
樹與二叉樹(資料結構)
樹的預設規則: 父級"值"大於子級"值’,右節點"值"大於左節點"值";
AVL樹,紅黑樹等,都是在樹 的基礎上對其結構做進一步的限制;在插入/刪除 與 查詢 效能之間做不同程度的平衡;
佇列(資料結構)
先進後出
棧(資料結構)
先進先出