「珠璣之櫝」系列簡介與索引

系列博文主要目的:html

  收集《編程珠璣》和《編程珠璣(續)》(如下簡稱《續》)上的算法和思想,幷包括了一些本身的思考和對相關問題的引伸,以備複習和查用。node

內容提要:算法

  主要是算法收集,結合了《程序設計實踐》 (Practise of Programming)、《編程精粹:編寫高質量C語言代碼》(Writing solid code)和《算法導論》的部分相關內容,以及本身的思考,不管你是否看過原書,都可以幫助你快速理解以致於可以獨立完成這些算法。我相信本身寫的解釋比原書詳細而易於理解,而且根據個人經驗,對不少問題進行了擴展,這也是這個系列命名爲「珠璣之櫝」的緣由。固然,「買櫝還珠」是不可取的,這個系列雖然收錄了絕大部分有價值的內容,但部分和話題相關但和算法關係不大的有趣內容限於本人時間有限,只好舍掉。建議時間富足的讀者儘可能閱讀原書,並把這個系列的博文當作參考資料。編程

  出自於《編程珠璣》和《續》原書的算法題和習題有標示。數組

  本系列博文已經寫完,預計1~3天發佈一篇,目前(2013.7.8)已發完。數據結構

 

索引連接:函數

  位向量/位圖的定義和應用debug

  估算的應用與Little定律設計

  隨機數函數取樣與機率code

  淺談代碼正確性:循環不變式、斷言、debug

  二分思想與分治法、排序思想

  字符串和數組算法:左移、哈希表、最長重複子序列的後綴數組解法、最大連續子序列

 

原書有但未收錄的內容介紹:

1.基礎的數據結構

  二分查找樹

2.較少使用的數據結構

  箱

3.基本的排序

  插入排序、希爾排序、快速排序

4.堆和優先級隊列

  我的更傾向於使用《算法導論》上介紹的版本

5.馬爾科夫鏈文本生成器

  利用馬爾科夫鏈的性質,通過文本訓練,可以產生一段天然的隨機文本的程序。

  與《程序設計實踐》相比,因爲使用了更精巧的數據結構,佔用空間較少,但也更難理解。

6.以二分查找(第9章)和質數查找(《續》第1章)爲例的代碼調優

7.位排序算法

  相似strcmp(),可查閱習題11.5

8.拓撲排序

  第2章,僞代碼:

initialize a queue to empty

for each node i

  if pre count of i is 0

    insert i to queue

while queue is not empty

  delete t from the front of queue

  print t

  for each successor s of t

    decrement pred count of s

    if the count is 0

    insert s to queue

 《算導》上的拓撲排序比這個略難理解一些,由於它爲了說明,引入告終束時間的概念。

9.關聯數組

  介紹的是Awk語言的特性,現在的C++裏的map容器還有像Python裏的字典有相似的做用。

10.以牛頓迭代法爲表明的數值分析(《續》第14章)

相關文章
相關標籤/搜索