[轉]算法與數據結構——入門總結與自學資料推薦

[轉]算法與數據結構——入門總結與自學資料推薦 html

本文轉自(http://www.cnblogs.com/jiahuix/p/4868881.html算法

1、大綱

   

博客董西城Vameiwindows

思惟導圖下載地址http://pan.baidu.com/s/1gdCqW8r數組

   

2、數據結構資料推薦

數組:查找快O(1),插入刪除慢O(n)網絡

鏈表:查找慢O(n),插入刪除快O(1)數據結構

塊狀鏈表:查找插入刪除O(sqrt(n));數組+鏈表;函數

隊列:先進先出post

堆棧:先進後出性能

雙端隊列:隊列與堆棧結合,有headtail的數組,隊首隊尾均可以增刪。ui

哈希表

  • 集合A到集合B的映射;
  • 哈希函數:MD5, SHA
  • 應用:文件對比,密碼存儲;
  • 碰撞解決:open hashing -> 鏈表;closed hashing -> 數組下標移動到空位(rehashing移動到更大的新數組) hash table

Bit-Map:一個bit表明一個數字,好比10bit能夠表明1~10 bitmap

二叉堆/:高度爲(lg^2)n,數組 資料2

最小堆:每一個父節點均比子節點小

   

字典樹(前綴樹):適合用於字符串檢索、字符串最長公共前綴、按字典排序 資料

插入、查找O(N):N爲字符串長度,空間O(26^n)

後綴樹:適合複雜的字符串操做

後綴樹組:適合複雜的字符串操做

二叉查找樹:增刪查的複雜度等於深度,深度最多爲n,最少爲log(n)

數列有序,將會退化成爲線性表,即獨苗的時候。

刪除操做時若是刪除節點同時有左右節點,使用刪除節點的左子樹的最大值或右子樹的最小值替換。

B:性能總等於二分法,沒有平衡問題。

B+:適合文件索引系統,只在葉子結點命中

B*:在B+樹基礎上增長兄弟節點指針,增長空間利用率

   

AVL:平衡二叉樹、深度爲O(lgn)、子樹深度相差不超過1、單旋轉與雙旋轉 資料

最小深度Math.ceil( log(2)(N+1) )

Treap:堆樹、性能位於普通二叉樹與AVL之間

紅黑樹:統計性能比AVL 資料

splay:伸展樹,每次搜索都會進行一次旋轉操做,搜索頻率大的結點會旋轉至根節點。m次搜索複雜度O(mlgn)

線段樹:高效地詢問和修改一個數列中某個區間的信息

樹狀數組:樹狀數組經過將線性結構轉換成僞樹狀結構(線性結構只能逐個掃描元素,而樹狀結構能夠實現跳躍式掃描),使得修改和求和複雜度均爲O(lgn)

:圖的表示:二維數組、鄰接表

並查集:並查集常做爲另外一種複雜的數據結構或者算法的存儲結構。常見的應用有:求無向圖的連通份量個數,最近公共祖先(LCA),帶限制的做業排序,實現Kruskar算法求最小生成樹等。

 

3、算法資料推薦

基本思想:動態規劃剪枝回溯法

排序:快速排序歸併排序堆排序桶排序七大排序對比

字符串:KMPKMPKMP

數論:排列組合

   

樹:

遍歷:每一個節點都檢查

先序遍歷:上、左、右

中序遍歷:左、上、右

後序遍歷:左、右、上

   

深度優先搜索DFS經過棧來實現

   

廣度優先搜索BFS經過隊列來實現

   

   

   

*圖片來源於網絡~>_<~

相關文章
相關標籤/搜索