圖書簡介
作者雖然沒有給出解決這些問題的具體代碼,但始終非常富有洞察力和創造力地圍繞著這些折磨程式設計師的實際問題展開討論,從而引導讀者理解問題並學會解決問題的技能,這些都是程式設計師實際編程生涯中的基本技能。為此,本書給出了一些精心設計的有趣而且頗具指導意義的程式,這些程式能夠為那些複雜的編程問題提供清晰而且完備的解決思路,書中還充滿了對實用程式設計技巧及基本設計原則的清晰而睿智的描述。
本書在第一版的基礎上增加了3個方面的新內容:測試、調試和計量,集合表示,字元串問題,並對第一版的所有程式都進行了改寫,生成了等量的新代碼。
編輯推薦
《編程珠璣》第一版是我早期職業生涯中閱讀過的對我影響較大的書籍之一,在書中首次接觸到的很多觀點都讓我長期受益。作者在這一版本中做了重要更新。新增加的很多例子讓我耳目一新。
——Steve McConnell,《代碼大全》作者
如果讓程式設計師們列舉他們喜歡的書籍,Jon Bentley的《編程珠璣》一定可以歸於經典之列。如同精美的珍珠出自飽受沙礫折磨的牡蠣,程式設計師們的精彩設計也來源於曾經折磨他們的實際問題。Bentley的“珍珠”基於堅實的工程學基礎,為那些麻煩的問題提供了富於智慧性和創造性的解決方案。本書通過一些有趣的具有指導意義的程式,對程式設計技巧和基本設計原理進行了清晰而睿智的描述。因此本書對各個層次的程式設計師都具有很高的價值。
在這一版本中,作者對第一版本中的大多數素材進行了徹底更新,以反映現 在的程式設計方法和環境。此外還增加了三方面的新內容:測試、調試和計時,集合表示,字元串問題。所有原始程式都重新進行了改寫,並生成了等量的新代碼。讀者可以從本書網站獲取所有程式的C或C++實現。
在新版本中,作者對於程式設計問題本質仍然保持了極大的關注,並針對這些問題給出了實用的解決方案。不論您是第一次閱讀這本經典讀物,還是已經閱讀過第一版,這本書都會成為您最喜愛的圖書之一。
作者簡介
Jon Bentley是位於新澤西州Murray Hill的朗訊貝爾實驗室計算機科學研究中心的技術委員會委員,Jon自1998年就成為Dr. Dobb's Joumal雜誌的特約編輯,他的“編程珠璣”專欄多年來一直是頂級學術雜誌Communications of the ACM最風行的特色專欄之一,而本書正是建立在這些專欄的基礎之上。
目錄
第一部分 基礎
第1章 開篇
1.1 一次友好的對話
1.2 準確的問題描述
1.3 程式設計
1.4 實現概要
1.5 原理
1.6 習題
1.7 深入閱讀
第2章 啊哈!算法
2.1 三個問題
2.2 無處不在的二分搜尋
2.3 基本操作的威力
2.4 排序
2.5 原理
2.6 習題
2.7 深入閱讀
2.8 變位詞程式的實現(邊欄)
第3章 數據決定程式結構
3.1 一個調查程式
. 3.2 格式信函編程
3.3 一組示例
3.4 結構化數據
3.5 用於特殊數據的強大工具
3.6 原理
3.7 習題
3.8 深入閱讀
第4章 編寫正確的程式
4.1 二分搜尋的挑戰
4.2 編寫程式
4.3 理解程式
4.4 原理
4.5 程式驗證的角色
4.6 習題
4.7 深入閱讀
第5章 編程小事
5.1 從偽代碼到c程式
5.2 測試工具
5.3 斷言的藝術
5.4 自動測試
5.5 計時
5.6 完整的程式
5.7 原理
5.8 習題
5.9 深入閱讀
5.10 調試(邊欄)
第二部分 性能
第6章 程式性能分析
6.1 實例研究
6.2 設計層面
6.3 原理
6.4 習題
6.5 深入閱讀
第7章 粗略估算
7.1 基本技巧
7.2 性能估計
7.3 安全係數
7.4 little定律
7.5 原理
7.6 習題
7.7 深入閱讀
7.8 日常生活中的速算(邊欄)
第8章 算法設計技術
8.1 問題及簡單算法
8.2 兩個平方算法
8.3 分治算法
8.4 掃描算法
8.5 實際運行時間
8.6 原理
8.7 習題
8.8 深入閱讀
第9章 代碼調優
9.1 典型的故事
9.2 急救方案集錦
9.3 大手術——二分搜尋
9.4 原理
9.5 習題
9.6 深入閱讀
第10章 節省空間
10.1 關鍵在於簡單
10.2 示例問題
10.3 數據空間技術
10.4 代碼空間技術
10.5 原理
10.6 習題
10.7 深入閱讀
10.8 巨大的節省(邊欄)
第三部分 套用
第11章 排序
11.1 插入排序
11.2 一種簡單的快速排序
11.3 更好的幾種快速排序
11.4 原理
11.5 習題
11.6 深入閱讀
第12章 取樣問題
12.1 問題
12.2 一種解決方案
12.3 設計空間
12.4 原理
12.5 習題
12.6 深入閱讀
第13章 搜尋
13.1 接口
13.2 線性結構
13.3 二分搜尋樹
13.4 用於整數的結構
13.5 原理
13.6 習題
13.7 深入閱讀
13.8 一個實際搜尋問題(邊欄)
第14章 堆
14.1 數據結構
14.2 兩個關鍵函式
14.3 優先權佇列
14.4 一種排序算法
14.5 原理
14.6 習題
14.7 深入閱讀
第15章 字元串
15.1 單詞
15.2 短語
15.3 生成文本
15.4 原理
15.5 習題
15.6 深入閱讀
第1版跋
第2版跋
附錄a 算法分類
附錄b 估算測試
附錄c 時空開銷模型
附錄d 代碼調優法則
附錄e 用於搜尋的c++類
部分習題提示
部分習題答案
索引