本書是計(jì)算機(jī)科學(xué)方面的經(jīng)典名著。書的內(nèi)容圍繞程序設(shè)計(jì)人員面對(duì)的一系列實(shí)際問(wèn)題展開(kāi)。作者Jon Bentley 以其獨(dú)有的洞察力和創(chuàng)造力,引導(dǎo)讀者理解這些問(wèn)題并學(xué)會(huì)解決方法,而這些正是程序員實(shí)際編程生涯中至關(guān)重要的。本書的特色是通過(guò)一些精心設(shè)計(jì)的有趣而又頗具指導(dǎo)意義的程序,對(duì)實(shí)用程序設(shè)計(jì)技巧及基本設(shè)計(jì)原則進(jìn)行了透徹而睿智的描述,為復(fù)雜的編程問(wèn)題提供了清晰而完備的解決思路。本書對(duì)各個(gè)層次的程序員都具有很高的閱讀價(jià)值。
非常有影響力的計(jì)算機(jī)科學(xué)著作之一
融深邃思想、實(shí)戰(zhàn)技術(shù)與趣味軼事于一爐的奇書
帶你真正領(lǐng)略計(jì)算機(jī)科學(xué)之美
多年以來(lái),當(dāng)讓程序員推選喜愛(ài)的計(jì)算機(jī)圖書時(shí),《編程珠璣》總是位于前列。正如自然界里珍珠出自細(xì)沙對(duì)牡蠣的磨礪,計(jì)算機(jī)科學(xué)大師喬恩·本特利以其獨(dú)有的洞察力和創(chuàng)造力,從磨礪程序員的實(shí)際問(wèn)題中凝結(jié)出一篇篇編程“珠璣”,成為世界計(jì)算機(jī)界名刊《ACM通訊》歷史上*受歡迎的專欄,*終結(jié)集為兩部計(jì)算機(jī)科學(xué)經(jīng)典名著,影響和激勵(lì)著一代又一代程序員和計(jì)算機(jī)科學(xué)工作者。本書為第一卷,主要討論計(jì)算機(jī)科學(xué)中*本質(zhì)的問(wèn)題:如何正確選擇和高效地實(shí)現(xiàn)算法。
在書中,作者選取許多具有典型意義的復(fù)雜編程和算法問(wèn)題,生動(dòng)描繪了歷史上大師們?cè)谔剿鹘鉀Q方案中發(fā)生的軼事、走過(guò)的彎路和不斷精益求精的歷程,引導(dǎo)讀者像真正的程序員和軟件工程師那樣富于創(chuàng)新性地思考,并透徹闡述和總結(jié)了許多獨(dú)特而精妙的設(shè)計(jì)原則、思考和解決問(wèn)題的方法以及實(shí)用程序設(shè)計(jì)技巧。解決方案的代碼均以C/C++語(yǔ)言編寫,不僅有趣,而且有很大的實(shí)戰(zhàn)示范意義。每章后所附習(xí)題極具挑戰(zhàn)性和啟發(fā)性,書末給出了簡(jiǎn)潔的解答。
作者簡(jiǎn)介
喬恩.本特利(Jon Bentley) 世界著名計(jì)算機(jī)科學(xué)家,被譽(yù)為影響算法發(fā)展的十位大師之一。他先后任職于卡內(nèi)基-梅隆大學(xué)(1976—1982)、貝爾實(shí)驗(yàn)室(1982—2001)和Avaya實(shí)驗(yàn)室(2001年至今)。在卡內(nèi)基-梅隆大學(xué)擔(dān)任教授期間,他培養(yǎng)了包括Tcl語(yǔ)言設(shè)計(jì)者John Ousterhout、Java語(yǔ)言設(shè)計(jì)者James Gosling、《算法導(dǎo)論》作者之一Charles Leiserson在內(nèi)的許多計(jì)算機(jī)科學(xué)大家。2004年榮獲Dr. Dobb's程序設(shè)計(jì)卓越獎(jiǎng)。
譯者簡(jiǎn)介
黃倩 河海大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系主任,曾任聯(lián)發(fā)博動(dòng)科技(北京)有限公司技術(shù)副理,主要從事視頻處理、機(jī)器學(xué)習(xí)等方面的研究工作,兼任中國(guó)人工智能學(xué)會(huì)深度學(xué)習(xí)專委會(huì)委員、中國(guó)計(jì)算機(jī)學(xué)會(huì)多媒體技術(shù)專委會(huì)委員、中國(guó)圖象圖形學(xué)學(xué)會(huì)多媒體專委會(huì)委員等。
錢麗艷 北京大學(xué)信息科學(xué)技術(shù)學(xué)院基礎(chǔ)實(shí)驗(yàn)教學(xué)研究所軟件實(shí)驗(yàn)室主任、高級(jí)工程師,畢業(yè)于國(guó)防科技大學(xué),目前主要從事數(shù)值計(jì)算、程序設(shè)計(jì)方面的研究工作。
審校人簡(jiǎn)介
劉田 北京大學(xué)信息科學(xué)技術(shù)學(xué)院計(jì)算機(jī)系軟件研究所副教授,畢業(yè)于中國(guó)科學(xué)技術(shù)大學(xué),目前主要從事離散數(shù)學(xué)、計(jì)算機(jī)理論方面的教學(xué)和研究工作,翻譯出版了
第 一部分 基礎(chǔ)
第 1章 開(kāi) 篇 3
1.1 一次友好的對(duì)話 3
1.2 準(zhǔn)確的問(wèn)題描述 4
1.3 程序設(shè)計(jì) 4
1.4 實(shí)現(xiàn)概要 6
1.5 原理 7
1.6 習(xí)題 8
1.7 深入閱讀 9
第 2章 啊哈!算法 11
2.1 三個(gè)問(wèn)題 11
2.2 無(wú)處不在的二分搜索 12
2.3 基本操作的威力 14
2.4 排序 16
2.5 原理 17
2.6 習(xí)題 18
2.7 深入閱讀 20
2.8 變位詞程序的實(shí)現(xiàn)(邊欄) 20
第3章 數(shù)據(jù)決定程序結(jié)構(gòu) 23
3.1 一個(gè)調(diào)查程序 23
3.2 格式信函編程 26
3.3 一組示例 28
3.4 結(jié)構(gòu)化數(shù)據(jù) 29
3.5 用于特殊數(shù)據(jù)的強(qiáng)大工具 30
3.6 原理 32
3.7 習(xí)題 33
3.8 深入閱讀 34
第4章 編寫正確的程序 37
4.1 二分搜索的挑戰(zhàn) 37
4.2 編寫程序 38
4.3 理解程序 40
4.4 原理 43
4.5 程序驗(yàn)證的角色 44
4.6 習(xí)題 45
4.7 深入閱讀 48
第5章 編程小事 49
5.1 從偽代碼到C程序 49
5.2 測(cè)試工具 51
5.3 斷言的藝術(shù) 53
5.4 自動(dòng)測(cè)試 55
5.5 計(jì)時(shí) 56
5.6 完整的程序 58
5.7 原理 59
5.8 習(xí)題 59
5.9 深入閱讀 61
5.10 調(diào)試(邊欄) 61
第二部分 性能
第6章 程序性能分析 65
6.1 實(shí)例研究 65
6.2 設(shè)計(jì)層面 67
6.3 原理 69
6.4 習(xí)題 69
6.5 深入閱讀 70
第7章 粗略估算 71
7.1 基本技巧 72
7.2 性能估計(jì) 74
7.3 安全系數(shù) 76
7.4 Little定律 78
7.5 原理 79
7.6 習(xí)題 79
7.7 深入閱讀 80
7.8 日常生活中的速算(邊欄) 81
第8章 算法設(shè)計(jì)技術(shù) 83
8.1 問(wèn)題及簡(jiǎn)單算法 83
8.2 兩個(gè)平方算法 84
8.3 分治算法 86
8.4 掃描算法 87
8.5 實(shí)際運(yùn)行時(shí)間 88
8.6 原理 90
8.7 習(xí)題 91
8.8 深入閱讀 92
第9章 代碼調(diào)優(yōu) 95
9.1 典型的故事 95
9.2 急救方案集錦 96
9.3 大手術(shù)——二分搜索 101
9.4 原理 105
9.5 習(xí)題 106
9.6 深入閱讀 108
第 10章 節(jié)省空間 109
10.1 關(guān)鍵在于簡(jiǎn)單 109
10.2 示例問(wèn)題 110
10.3 數(shù)據(jù)空間技術(shù) 113
10.4 代碼空間技術(shù) 116
10.5 原理 118
10.6 習(xí)題 119
10.7 深入閱讀 120
10.8 巨大的節(jié)。ㄟ厵冢 121
第三部分 應(yīng)用
第 11章 排 序 125
11.1 插入排序 125
11.2 一種簡(jiǎn)單的快速排序 127
11.3 更好的幾種快速排序 130
11.4 原理 133
11.5 習(xí)題 133
11.6 深入閱讀 135
第 12章 取樣問(wèn)題 137
12.1 問(wèn)題 137
12.2 一種解決方案 138
12.3 設(shè)計(jì)空間 139
12.4 原理 142
12.5 習(xí)題 143
12.6 深入閱讀 144
第 13章 搜 索 145
13.1 接口 145
13.2 線性結(jié)構(gòu) 147
13.3 二分搜索樹(shù) 151
13.4 用于整數(shù)的結(jié)構(gòu) 153
13.5 原理 155
13.6 習(xí)題 156
13.7 深入閱讀 157
13.8 一個(gè)實(shí)際搜索問(wèn)題(邊欄) 157
第 14章 堆 161
14.1 數(shù)據(jù)結(jié)構(gòu) 161
14.2 兩個(gè)關(guān)鍵函數(shù) 163
14.3 優(yōu)先級(jí)隊(duì)列 166
14.4 一種排序算法 169
14.5 原理 171
14.6 習(xí)題 172
14.7 深入閱讀 174
第 15章 字符串 175
15.1 單詞 175
15.2 短語(yǔ) 179
15.3 生成文本 182
15.4 原理 187
15.5 習(xí)題 188
15.6 深入閱讀 189
第 1版跋 191
第 2版跋 195
附錄A 算法分類 197
附錄B 估算測(cè)試 203
附錄C 時(shí)空開(kāi)銷模型 205
附錄D 代碼調(diào)優(yōu)法則 211
附錄E 用于搜索的C++類 217
部分習(xí)題提示 223
部分習(xí)題答案 229
索引 259