算法學習筆記

jopen 9年前發布 | 54K 次閱讀 算法

算法虐我千百遍,我待算法如初戀。

</blockquote>

學習方法

1) 把所有經典算法寫一遍
2) 看算法源碼
3) 加入算法學習社區,相互鼓勵學習
4) 看經典書籍

基本數據結構和算法

這些算法全部自己敲一遍:

二叉樹

二叉樹
二叉查找樹
Trie樹(前綴樹)
后綴樹
最優二叉樹(赫夫曼樹)
伸展樹(splay tree 分裂樹)
平衡二叉樹AVL
紅黑樹
B樹(B-),B+,B*
R樹

二叉堆 (大根堆,小根堆)
二項樹
二項堆
斐波那契堆(Fibonacci Heap)

哈希表/散列表 (Hash Table)

字符串算法

BF算法
KMP算法
BM算法

圖的算法

圖的存儲結構和基本操作(建立,遍歷,刪除節點,添加節點)
最小生成樹
拓撲排序
關鍵路徑
最短路徑: Floyd,Dijkstra,bellman-ford,spfa

排序算法

交換排序算法
插入排序
選擇排序
希爾排序

堆排序
快排
歸并排序

線性排序算法 基數排序

查找算法

順序表查找:順序查找
有序表查找:二分查找
分塊查找: 塊內無序,塊之間有序;可以先二分查找定位到塊,然后再到塊中順序查找 中使用順序查找(這里之所以叫動態查找表,是因為表結構是查找的過程中動態生成的)
動態查找: 二叉排序樹,AVL樹,B- ,B+
哈希表: O(1)

15個經典基礎算法

A*尋路算法: 求解最短路徑 Dijkstra:最短路徑算法 (八卦下:Dijkstra是荷蘭的計算機科學家,提出”信號量和PV原語“,"解決哲學家就餐問題",”死鎖“也是它提出來的)
DP (動態規劃 dynamic programming)
BFS/DFS (廣度/深度優先遍歷)
紅黑樹 (一種自平衡的二叉查找樹)
KMP 字符串匹配算法
遺傳算法
啟發式搜索
圖像特征提取之SIFT算法
傅立葉變換
Hash
快速排序
SPFA(shortest path faster algorithm) 單元最短路徑算法
快遞選擇SELECT

算法設計思想

為了更簡潔的形式設計和藐視算法,在算法設計時又常常采用遞歸技術,用遞歸描述算法。

迭代法
窮舉搜索法
遞推法

動態規劃
貪心算法
回溯
分治算法

http://www.chinaunix.net/old_jh/23/437639.html

推薦閱讀

刷題必備
《劍指offer》
《編程之美》
《編程珠璣》Programming Pearls 偏算法理論
《編程珠璣(續)》
《More Programming Pearls》 偏算法軼事

《數據結構與算法分析》
《算法設計與分析基礎》
《算法導論》 告訴你有哪些算法
《算法引論》 告訴你如何創造算法 斷貨

側重經典算法的實現
《Elements of Programming》 STL代碼 快 準 狠 ,寫出的代碼可以上層次
《C interfaces and Implementation》
《The practice of programming》 Brian Kernighan和Rob Pike

《微軟的夢工廠》
《Language Implementatin patterns》
《Algorithms on Strings,Trees and Sequences》

《writing efficient programs》 優化

《Algorithm Design Manual》 紅皮書

《The science of programming》 證明代碼段的正確性 800塊一本

高級數據結構(如元胞自動機、斐波納契堆、線段樹)

《Algorithms》 4版
《Advanced Data Structures》 各種詭異數據結構和算法 600塊

《深入理解計算機系統》
《TCP/IP詳解三卷》
《UNIX網絡編程二卷》
《UNIX環境高級編程:第2版》

參考鏈接和學習網站

** @ July 博客http://blog.csdn.net/v_july_v **
《數學建模十大經典算法》
《數據挖掘領域十大經典算法》
《十道海量數據處理面試題》
《數字圖像處理領域的二十四個經典算法》
《精選微軟等公司經典的算法面試100題》

微軟面試100題 http://blog.csdn.net/column/details/ms100.html
程序員編程藝術 http://blog.csdn.net/v_JULY_v/article/details/6460494

https://github.com/julycoding/The-Art-Of-Programming-By-July 算法題集合 https://github.com/activesys/libcstl 通用數據結構和算法庫
https://github.com/nonstriater/Learn-Algorithm 算法小組

貝葉斯:

  1. 阮一峰總結的這兩篇《貝葉斯推斷及其互聯網應用》
    http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html
    http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_two.html
  2. 算法雜貨鋪——分類算法之樸素貝葉斯分類(Naive Bayesian classification)
    http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
  3. 樸素貝葉斯(NB,Naive Bayes)簡介
    http://home.cnblogs.com/group/topic/40112.html
  4. 數學之美番外篇:平凡而又神奇的貝葉斯方法
    http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ </p>

    這4部分看完后,就能自己推貝葉斯、樸素貝葉斯,還能了解各種常見概率、集合論等,實際上對應用貝葉斯已經可以打好基礎了。

    MYSQL 背后的數據結構和算法 http://blogread.cn/it/article/4088?f=wb2

    基本算法演示
    http://sjjg.js.zwu.edu.cn/SFXX/sf1/sfys.html
    http://www.cs.usfca.edu/~galles/visualization/Algorithms.html

    編程網站

    http://leetcode.com/
    http://oj.leetcode.com/
    http://openjudge.cn/ POJ。這有個POJ上的ACM訓練方案 http://www.java3z.com/cwbwebhome/article/article19/res041.html
    http://ac.jobdu.com/index.php 九度OJ

    來自:https://github.com/nonstriater/Learn-Algorithms
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!