程式設計師實用演算法.pdf免費下載
阿新 • • 發佈:2018-12-30
《程式設計師實用演算法》重點關注的是實用、立即可用的程式碼,並且廣泛討論了可移植性和特定於實現的細節。《程式設計師實用演算法》作者介紹了一些有用但很少被討論的演算法,它們可用於語音查詢、日期和時間例程(直到公元1年)、B樹和索引檔案、資料壓縮、任意精度的算術、校驗和與資料驗證,並且還最全面地介紹了查詢例程、排序演算法和資料結構。
譯者序 前言 致謝 第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.3 Boyer?Moore查詢 4.3.1 啟發式方法#1:跳過字元 4.3.2 啟發式方法#2:重複模式 4.4 多字串查詢 4.5 用於正則表示式的字串查詢:grep 4.6 近似字串匹配技術 4.7 語音比較:Soundex演算法 4.8 Metaphone:現代的Soundex 4.9 選擇技術 4.10 資源和參考資料 4.10.1 通用參考資料 4.10.2 Boyer?Moore 4.10.3 多字串查詢 4.10.4 正則表示式查詢 4.10.5 近似字串匹配 4.10.6 Soundex演算法和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.5 AVL樹 6.2 紅黑樹 6.3 伸展樹 6.4 B樹 6.4.1 保持B樹平衡 6.4.2 實現B樹演算法 6.4.3 B樹實現的程式碼 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.1 LZW演算法的虛擬碼 9.4.2 LZW壓縮的實現 9.4.3 填滿字典 9.5 使用哪種壓縮方法 9.6 資源和參考資料 第10章 資料完整性和驗證 10.1 簡單的校驗和 10.2 加權校驗和 10.3 迴圈冗餘校驗 10.3.1 CRC?CCITT 10.3.2 CRC?16 10.3.3 CRC?32 10.4 資源和參考資料