數組
(2*5+3)*2=26
a+26
稀疏矩陣
稀疏矩陣:一個矩陣中大量的元素爲零
A
數據結構定義
線性表
線性表-順序存儲與鏈式存儲對比
線性表-隊列與棧
不考慮入棧就出棧:
c-》b-》a
考慮入棧就出棧
a-》b-》c
a-》c-》b
b-》a-》c
b-》c-》a
D
廣義表
表頭:最外層的第一個表元素
表尾:除第一個元素外的其他所有元素
- 長度3,深度2
- b=head(head(tail(LS1)))
樹與二叉樹
結點的度:一個結點擁有的孩子結點數
樹的度:所有結點中度數最高的結點的度 2
葉子結點:無孩子結點 7
分支結點:有分支的結點 2,3,6
內部結點:不是葉子結點和根結點的結點 2,3,6
父結點:相對而言
子結點:相對而言
兄弟結點:同一父親下的同級結點
層次:級別
樹與二叉樹-二叉樹遍歷
前序遍歷:中左右 12457836
中序遍歷:左中右 42785 6
後序遍歷:左右中 48752631
層次遍歷:一層層,從左向右 12345678
樹與二叉樹-反向構造二叉樹
樹與二叉樹-樹轉二叉樹
樹與二叉樹-查找二叉樹
樹與二叉樹-最優二叉樹(哈夫曼樹)
樹的路徑長度:結點的連線的數量
權:葉子結點代表的字符出現的頻度
帶權路徑長度:路徑長度乘以權值 (2葉子)帶權路徑長度:2*2=4
樹的帶權路徑長度(樹的代價):葉子結點的帶權路徑長度的和
哈夫曼樹:樹的代價最小
構造哈夫曼樹:
- 先構建最小的樹,選最小的兩個值
- 選擇未使用的最小值繼續構建
樹與二叉樹-線索二叉樹
二叉樹的葉子存在大量的空指針,所以構建線索二叉樹
前序線索二叉樹:ABDEHCFGI
樹與二叉樹-平衡二叉樹
平衡度:左結點的深度減去右結點的深度
圖
圖的存儲-鄰接矩陣
圖的存儲-鄰接表
圖的遍歷-
圖-拓撲排序
圖的最小生成樹-普里姆算法
樹與圖的區別:樹沒有環路
由根點選出最小的路徑,注意不能形成環
AàB
AàE
AàF
FàD
DàC
圖的最小生成樹-克魯斯卡爾算法
選出最小的5條邊:注意不能形成環
AàB
AàE
AàF
FàD
DàC
算法基礎-算法的特性
算法的複雜度
查找-順序查找
二分查找
查找-散列表
存在重複的問題:解決思路:擴大空間或提高算法複雜度,減小重複度
排序
穩定排序:排序前後相等值的相對前後不變
內排序:內存中排序
外排序:外部存儲空間排序
效率:直接插入排序《《希爾排序
冒泡排序《《快速排序
簡單排序《《堆排序
排序-直接插入排序
排序-希爾排序
數據量少的時候選擇直接插入排序,數據量大的時候,選擇希爾排序
排序-直接選擇排序
排序-堆排序
小頂堆:所有孩子結點都大於根節點
大頂堆:所有孩子結點都小於根節點
排序-冒泡排序
排序-快速排序
排序-歸併排序
排序-基數排序
排序-總結