6.數據結構和算法

數組

(2*5+3)*2=26

a+26

 

稀疏矩陣

 

稀疏矩陣:一個矩陣中大量的元素爲零

A

 

數據結構定義

 

 

 

 

 

 

 

線性表

 

 

 

 

 

 

 

 

 

 

線性表-順序存儲與鏈式存儲對比

 

 

 

 

 

 

 

 

 

 

線性表-隊列與棧

不考慮入棧就出棧:

c-》b-》a

考慮入棧就出棧

a-》b-》c

a-》c-》b

b-》a-》c

b-》c-》a

 

 

D

 

 

廣義表

表頭:最外層的第一個表元素

表尾:除第一個元素外的其他所有元素

 

  1. 長度3,深度2
  2. b=head(head(tail(LS1)))

 

 

樹與二叉樹

結點的度:一個結點擁有的孩子結點數

樹的度:所有結點中度數最高的結點的度       2

葉子結點:無孩子結點       7

分支結點:有分支的結點           2,3,6

內部結點:不是葉子結點和根結點的結點       2,3,6

父結點:相對而言

子結點:相對而言

兄弟結點:同一父親下的同級結點

層次:級別

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

樹與二叉樹-二叉樹遍歷

前序遍歷:中左右       12457836

中序遍歷:左中右       42785 6

後序遍歷:左右中       48752631

層次遍歷:一層層,從左向右    12345678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

樹與二叉樹-反向構造二叉樹

 

 

 

樹與二叉樹-樹轉二叉樹

 

樹與二叉樹-查找二叉樹

 

 

 

 

 

 

 

 

樹與二叉樹-最優二叉樹(哈夫曼樹)

樹的路徑長度:結點的連線的數量

權:葉子結點代表的字符出現的頻度

帶權路徑長度:路徑長度乘以權值           (2葉子)帶權路徑長度:2*2=4

樹的帶權路徑長度(樹的代價):葉子結點的帶權路徑長度的和

 

哈夫曼樹:樹的代價最小

 

構造哈夫曼樹:

  1. 先構建最小的樹,選最小的兩個值
  2. 選擇未使用的最小值繼續構建

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

樹與二叉樹-線索二叉樹

 

二叉樹的葉子存在大量的空指針,所以構建線索二叉樹

 

前序線索二叉樹:ABDEHCFGI

 

樹與二叉樹-平衡二叉樹

 

平衡度:左結點的深度減去右結點的深度

 

 

 

 

圖的存儲-鄰接矩陣

 

 

 

 

圖的存儲-鄰接表

圖的遍歷-

 

 

 

 

 

圖-拓撲排序

 

 

 

 

 

 

 

 

 

 

 

 

圖的最小生成樹-普里姆算法

 

樹與圖的區別:樹沒有環路

 

由根點選出最小的路徑,注意不能形成環

AàB

AàE

AàF

FàD

DàC

 

圖的最小生成樹-克魯斯卡爾算法

選出最小的5條邊:注意不能形成環

AàB

AàE

AàF

FàD

DàC

 

算法基礎-算法的特性

算法的複雜度

查找-順序查找

 

 

二分查找

 

 

 

 

查找-散列表

存在重複的問題:解決思路:擴大空間或提高算法複雜度,減小重複度

 

排序

穩定排序:排序前後相等值的相對前後不變

內排序:內存中排序

外排序:外部存儲空間排序

 

效率:直接插入排序《《希爾排序

         冒泡排序《《快速排序

         簡單排序《《堆排序

排序-直接插入排序

 

排序-希爾排序

數據量少的時候選擇直接插入排序,數據量大的時候,選擇希爾排序

 

 

 

 

排序-直接選擇排序

 

排序-堆排序

小頂堆:所有孩子結點都大於根節點

大頂堆:所有孩子結點都小於根節點

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

排序-冒泡排序

 

 

 

 

 

 

 

 

排序-快速排序

 

 

排序-歸併排序

 

 

 

 

 

排序-基數排序

 

 

排序-總結

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章