簡介
《程式設計師實用算法》作者介紹了一些有用但很少被討論的算法,它們可用於語音查找、日期和時間例程(直到公元1年)、B樹和索引檔案、數據壓縮、任意精度的算術、校驗和與數據驗證,並且還最全面地介紹了查找例程、排序算法和數據結構。內容介紹
![《程式設計師實用算法》](/img/4/d48/nBnauM3XwYzMxUjNxcTM2cDNxMTMwAzMzQTOwADMwAzMxAzL3EzL4EzLt92YucmbvRWdo5Cd0FmLyE2LvoDc0RHa.jpg)
本書重點關注的是實用,立即可用的代碼,並且廣泛討論了可移植性和特定於實現的細節。本書作者介紹了一些有用但很少被討論的算法,它們可用於語音查找。日期和時間例程(直到公元1年)、B樹和索引檔案、數據壓縮、任意精度的算術,校驗和與數據驗證,並且全面地介紹了查找例程、排序算法和數據結構。..
本書只要求讀者具有C語言的初級知識以及基本代數的相關知識。原始碼經過測試符合ANSI標準,可以運行在UNIX下,以及Borland、Microsoft和Watcom的編譯器上。
作者介紹
AndrewBinstock是《UNIXReview》的主編和《CGazette》的創刊編輯。他是《HPLaserJetProgramming》(Addison-Wesley,1991)的第一作者。.JohnRex是一位計算機顧問,專攻C和C++。他是《CGazette》的前任技術編輯,並且為許多雜誌撰寫文章。
目錄
第1章緒論1.1評估算法
1.2修改算法
1.2.1主要的最佳化:I/O
1.2.2主要的最佳化:函式調用
1.3資源和參考資料
第2章基本數據結構
2.1鍊表
2.1.1雙向鍊表
2.1.2鍊表的其他特徵
2.2棧和佇列
2.2.1棧的特徵
2.2.2佇列的特徵
第3章散列
3.1散列的概念
3.2散列函式
3.3衝突解決方法
.3.3.1線性再散列法
3.3.2非線性再散列法
3.3.3外部拉鏈法
3.4性能問題
3.5資源和參考資料
第4章查找
4.1查找的特徵
4.1.1準備時間
4.1.2運行時間
4.1.3回溯的需要
4.2蠻力查找
4.3BoyerMoore查找
4.3.1啟發式方法#1:跳過字元
4.3.2啟發式方法#2:重複模式
4.4多字元串查找
4.5用於正則表達式的字元串
查找:grep
4.6近似字元串匹配技術
4.7語音比較:SOUNDEX算法
4.8Metaphone:現代的Soundex
4.9選擇技術
4.10資源和參考資料
4.10.1通用參考資料
4.10.2BoyerMoore
4.10.3多字元串查找
4.10.4正則表達式查找
4.10.5近似字元串匹配
4.10.6Soundex算法和Metaphone
算法
第5章排序
5.1排序的基本特徵
5.1.1穩定性
5.1.2對哨兵的需求
5.1.3對鍊表進行排序的能力
5.1.4輸入的階的相關性
5.1.5對額外存儲空間的需求
5.1.6內部排序技術與外部排序
技術
5.2排序模型
5.2.1冒泡排序
5.2.2插入排序
5.2.3希爾排序
5.2.4快速排序..
5.2.5堆排序
5.3對鍊表進行插入排序
5.4對鍊表進行快速排序
5.5對多個鍵進行排序——不穩定
排序的修正方法
5.6網路排序
5.7小結:選擇一種排序算法
5.8資源和參考資料
第6章樹
6.1二叉樹
6.1.1樹查找
6.1.2節點插入
6.1.3節點刪除
6.1.4二叉查找樹的性能
6.1.5AVL樹
6.2紅黑樹
6.3伸展樹
6.4B樹
6.4.1保持B樹平衡
6.4.2實現B樹算法
6.4.3B樹實現的代碼
6.5可以看見森林嗎
6.6資源和參考資料
第7章日期和時間
7.1日期例程的庫
7.2時間例程
7.3用於日期和時間數據的格式
7.4最後的提醒
7.5資源和參考資料
第8章任意精度的算術
8.1構建計算器8.2表示數字
8.3計算
8.4加法
8.5減法
8.6乘法
8.7除法
8.8關於計算器要注意的最後幾點
8.9用於計算平方根的牛頓算法
8.10分期付款表
8.11資源和參考資料
第9章數據壓縮
9.1行程編碼
9.2霍夫曼壓縮
9.2.1代碼
9.2.2其他問題
9.3滑動視窗壓縮
9.4基於字典的壓縮(LZW)
9.4.1LZW算法的偽代碼
9.4.2LZW壓縮的實現
9.4.3填滿字典
9.5使用哪種壓縮方法
9.6資源和參考資料
第10章數據完整性和驗證
10.1簡單的校驗和
10.2加權校驗和
10.3循環冗餘校驗
10.3.1CRCCCITT
10.3.2CRC16
10.3.3CRC32
盤點有關算法書籍
算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。 |