日韩偷拍一区二区,国产香蕉久久精品综合网,亚洲激情五月婷婷,欧美日韩国产不卡

在線客服
算法心得:高效算法的奧秘圖書
人氣:24

算法心得:高效算法的奧秘

在本書中,作者給我們帶來了一大批極為誘人的知識,其中包括各種節省程序運行時間的技巧、算法與竅門。學習了這些技術,程序員就可寫出優雅高效的軟件,同時還能洞悉其中原理。這些技術極為實用,而且其問題本身又...
  • 所屬分類:圖書 >計算機/網絡>計算機理論  
  • 作者:(美) [Henry] S. [Warren], Jr.著
  • 產品參數:
  • 叢書名:--
  • 國際刊號:9787111453567
  • 出版社:機械工業出版社
  • 出版時間:2014-03
  • 印刷時間:2014-03-01
  • 版次:5
  • 開本:12開
  • 頁數:--
  • 紙張:膠版紙
  • 包裝:平裝
  • 套裝:

內容簡介

在本書中,作者給我們帶來了一大批極為誘人的知識,其中包括各種節省程序運行時間的技巧、算法與竅門。學習了這些技術,程序員就可寫出優雅高效的軟件,同時還能洞悉其中原理。這些技術極為實用,而且其問題本身又非常有趣,有時甚至像猜謎解謎一般,需要奇思妙想才行。簡而言之,軟件開發者看到這些改進程序效率的妙計之后,定然大喜。

本書較第1版增補了大量內容

新增了循環冗余校驗(CRC)一章,其中講解了常用的CRC-32校驗碼

新增了糾錯碼(ECC)一章,其中講解了漢明碼

詳解了除數為常數的整數除法,增補了僅含移位操作和加法操作的算法

不計算商而直接求余數

擴充了與種群計數和前導0計數有關的知識

數組種群計數

執行壓縮與擴展操作的新算法

LRU算法

浮點數與整數互化

估算浮點數的平方根倒數

一系列離散函數圖像

各章均配有習題與參考答案

編輯推薦

由在IBM工作50余年的博學計算機專家撰寫,Amazon全五星評價,算法領域有影響力的著作之一

Google公司首席架構師、Jolt大獎得主Joshua Bloch和Emacs合作創始人、C語言暢銷書作者Guy Steele傾情推薦

算法的藝術和數學的智慧在本書中得到了體現,書中總結了大量高效、優雅和奇妙的算法,并從數學角度剖析了其背后的原理

作者簡介

Henry S. Warren, Jr.,計算機科學家,在IBM供職50余年,經歷了IBM704時代、PowerPC時代及其后種種更迭。曾參與多個軍事指揮與控制系統工程,并且參加了由Jack Schwarz領銜的"SET語言"項目。自1973年起,Henry就職于IBM研發部,努力探索編譯器和計算機架構。當前正研究一種旨在每秒執行百億億次運算的超級計算機。他擁有紐約大學柯朗數學科學研究所計算機科學博士學位。

愛飛翔,博學軟件開發工程師,擅長Web開發、移動開發和游戲開發,有10余年開發經驗,曾主導和參與了多個手機游戲和手機軟件項目的開發,經驗十分豐富。業余愛好文學和歷史,有一定的文學造詣。翻譯并出版了多本計算機著作,如《NoSQL精粹》、《Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法》、《測試驅動的iOS開發》和《JavaScript應用開發實踐指南》等。

目錄

譯者序

序(第1版序)

前言

第1章 概述

1.1 記法

1.2 指令集與執行時間模型

1.3 習題

第2章 基礎知識

2.1 操作最右邊的位元

2.1.1 德摩根定律的推論

2.1.2 從右至左的可計算性測試

2.1.3 位操作的新式用法

2.2 結合邏輯操作的加減運算

2.3 邏輯與算術表達式中的不等式

2.4 值函數

2.5 兩數平均值

2.6 符號擴展

2.7 用無符號右移模擬帶符號右移操作

2.8 符號函數

2.9 三值比較函數

2.10 符號傳遞函數

2.11 將值為0的位段解碼為2的n次方

2.12 比較謂詞

2.12.1 利用進位標志求比較謂詞

2.12.2 計算機如何設置比較謂詞

2.13 溢出檢測

2.13.1 帶符號的加減法

2.13.2 計算機執行帶符號數的加減法時如何設置溢出標志

2.13.3 無符號數的加減法

2.13.4 乘法

2.13.5 除法

2.14 加法、減法與乘法的特征碼

2.15 循環移位

2.16 雙字長加減法

2.17 雙字長移位

2.18 多字節加減法與求值

2.19 doz、max、min函數

2.20 互換寄存器中的值

2.20.1 交換寄存器中相應的位段

2.20.2 交換同一寄存器內的兩個位段

2.20.3 有條件的交換

2.21 在兩個或兩個以上的值之間切換

2.22 布爾函數分解公式

2.23 實現16種二元布爾操作

2.24 習題

第3章 2的冪邊界

3.1 將數值上調/下調為2的已知次冪的倍數

3.2 調整到上一個/下一個2的冪

3.2.1 向下舍入

3.2.2 向上舍入

3.3 判斷取值范圍是否跨越了2的冪邊界

3.4 習題

第4章 算術邊界

4.1 檢測整數邊界

4.2 通過加減法傳播邊界

4.3 通過邏輯操作傳播邊界

4.4 習題

第5章 位計數

5.1 統計值為"1"的位元數

5.1.1 兩個字組種群計數的和與差

5.1.2 比較兩個字組的種群計數

5.1.3 統計數組中值為"1"的位元數

5.1.4 應用

5.2 奇偶性

5.2.1 計算字組的奇偶性

5.2.2 將表示奇偶性的位元添加到7位量中

5.2.3 應用

5.3 前導0計數

5.3.1 浮點數算法

5.3.2 比較兩個字組前導0的個數

5.3.3 與對數函數的關系

5.3.4 應用

5.4 后綴0計數

5.5 習題

第6章 在字組中搜索位串

6.1 尋找首個值為0的字節

6.1.10 值字節位置函數的一些簡單推廣

6.1.2 搜索給定范圍內的值

6.2 尋找首個給定長度的全1位串

6.3 尋找最長全1位串

6.4 尋找最短全1位串

6.5 習題

第7章 重排位元與字節

7.1 反轉位元與字節

7.1.1 位元反轉算法的推廣

7.1.2 奇特的位元反轉算法

7.1.3 遞增反轉后的整數

7.2 亂序排列位元

7.3 轉置位矩陣

7.4 壓縮算法(廣義提取算法)

7.4.1 用"插入"、"提取"指令實現壓縮操作

7.4.2 向左壓縮

7.5 展開算法(廣義插入算法)

7.6 壓縮與展開操作的硬件算法

7.6.1 壓縮

7.6.2 展開

7.7 通用置換算法及分羊操作

7.8 重排與下標變換

7.9 LRU算法

7.10 習題

第8章 乘法

8.1 多字乘法

8.2 64位積的高權重部分

8.3 無符號與帶符號的高權重積互化

8.4 與常數相乘

8.5 習題

第9章 整數除法

9.1 預備知識

9.2 多字除法

9.3 用帶符號除法計算無符號短除法

9.3.1 用帶符號長除法計算無符號短除法

9.3.2 用帶符號短除法計算無符號短除法

9.4 無符號長除法

9.4.1 用硬件實現移位并相減算法

9.4.2 用短除法實現無符號長除法

9.5 用長除法實現雙字除法

9.5.1 無符號雙字除法

9.5.2 帶符號雙字除法

9.6 習題

第10章 除數為常量的整數除法

10.1 除數為2的已知次冪的帶符號除法

10.2 求與2的已知次冪相除的帶符號余數

10.3 在除數不是2的冪時求帶符號除法及余數

10.3.1 除以3

10.3.2 除以5

10.3.3 除以7

10.4 除數大于等于2的帶符號除法

10.4.1 算法

10.4.2 算法可行性證明

10.4.3 證明乘積正確

10.5 除數小于等于-2的帶符號除法

10.6 將除法算法集成至編譯器中

10.7 其他主題

10.7.1 性

10.7.2 可生成程序代碼的除數

10.8 無符號除法

10.8.1 除數為3的無符號除法

10.8.2 除數為7的無符號除法

10.9 除數大于等于1的無符號除法

10.9.1 無符號版算法

10.9.2 算法可行性證明

10.9.3 證明無符號版算法的乘積正確

10.10 將無符號除法算法集成至編譯器中

10.11 與無符號除法相關的其他話題

10.11.1 可生成無符號除法代碼的除數

10.11.2 帶符號乘法與無符號乘法互化

10.11.3 更簡單的無符號除法生成算法

10.12 余數非負式除法與向下取整式除法的適用性

10.13 類似算法

10.14 神奇數字示例

10.15 用Python語言編寫的簡單代碼

10.16 除數為常量的除法

10.16.1 用歐幾里得算法計算乘法逆元素

10.16.2 用牛頓法計算乘法逆元素

10.16.3 乘法逆元素示例

10.17 檢測除以常數后是否余0

10.17.1 無符號除法

10.17.2 除數大于等于2的帶符號除法

10.18 不使用Multiply High指令的除法算法

10.18.1 無符號除法

10.18.2 帶符號除法

10.19 合計各數位求余數

10.19.1 求無符號除法的余數

10.19.2 求帶符號除法的余數

10.20 用乘法及右移位求余數

10.20.1 求無符號除法的余數

10.20.2 求帶符號除法的余數

10.21 將普通除法化為除法

10.22 計時測試

10.23 用電路計算除數為3的除法

10.24 習題

第11章 初等函數

11.1 整數平方根

11.1.1 用牛頓法開平方

11.1.2 二分查找

11.1.3 硬件算法

11.2 整數立方根

11.3 求整數冪

11.3.1 用n的二進制分解式計算xn

11.3.2 用Fortran語言計算2n

11.4 整數對數

11.4.1 以2為底的整數對數

11.4.2 以10為底的整數對數

11.5 習題

第12章 以特殊值為底的數制

12.1 以-2為底的數制

12.2 以-1+i為底的數制

12.3 以其他數為底的數制

12.4 較高效的底是什么

12.5 習題

第13章 格雷碼

13.1 簡介

13.2 遞增格雷碼整數

13.3 負二進制格雷碼

13.4 格雷碼簡史及應用

13.5 習題

第14章 循環冗余校驗

14.1 簡介

14.2 理論

14.3 實現

14.3.1 硬件實現

14.3.2 軟件實現

14.4 習題

第15章 糾錯碼

15.1 簡介

15.2 漢明碼

15.2.1 SEC?DED碼

15.2.2 校驗位個數的最小值

15.2.3 小結

15.3 適用于32位信息的軟件SEC?DED算法

15.4 廣義錯誤修正

15.4.1 漢明距離

15.4.2 編碼論的主要問題

15.4.3 n維球面

15.5 習題

第16章 希爾伯特曲線

16.1 生成希爾伯特曲線的遞歸算法

16.2 根據希爾伯特曲線上從起點到某點的途經距離求其坐標

16.3 根據希爾伯特曲線上的坐標求從起點到某點的途經距離

16.4 遞增希爾伯特曲線上點的坐標

16.5 非遞歸的曲線生成算法

16.6 其他空間填充曲線

16.7 應用

16.8 習題

第17章 浮點數

17.1 IEEE格式

17.2 整數與浮點數互化

17.3 使用整數操作比較浮點數大小

17.4 估算平方根倒數

17.5 前導數位的分布

17.6 雜項數值表

17.7 習題

第18章 素數公式

18.1 簡介

18.2 Willans公式

18.2.1 Willans第二公式

18.2.2 Willans第三公式

18.2.3 Willans第四公式

18.3 Wormell公式

18.4 用公式來描述其他難解的函數

18.5 習題

參考答案

附錄A 4位計算機算術運算表

附錄B 牛頓法

附錄C 各種離散函數圖像

參考文獻

在線預覽

譯者序

寫代碼總會遇到難題,時而苦于乘法操作頻繁溢出,時而苦于開方算法太過笨拙,于是,程序員之間口耳相傳的那些代碼秘籍,這些時候就該大顯身手了。有些小程序,僅兩三行代碼即能解決平常數十行代碼方能實現的功能;還有些小程序,只用0x24924925這般神奇的數字,即能成倍提升運算速度。讀者若對此感興趣,則本書定能令你開懷暢讀。

作者從事計算機研發工作數十年,他將期間所得之大量技巧融于書中。本書不但講授算法技巧,而且還會剖析背后的數學原理,令你在學會某個奇妙算法后,可舉一反三,推出很多類似技巧,以運用于不同場合。

在研究這些高效而優雅的算法時,作者還會如數家珍地列出許多變體,并旁征博引地講述可以解決同一問題的其他思路,鋪陳完畢后,更會將各自優劣娓娓道來。實際應用中,經常需要權衡各算法之輕重,嵌入式開發、硬件編程、圖形渲染、游戲智能等領域尤其如此,若是平素能像作者這樣勤于總結、善于對比,那么在需要用到相關技巧時必能信手拈來,左右逢源。

從培養興趣、鍛煉思維、付諸實踐三個角度觀之,本書皆為精彩而思辨的智慧書。既可靜心品讀代碼之詩意,又能細致體味數學之美感,何其樂哉!

作者乃業界翹楚,學識淵博而思維開闊,文中部分詞句與日常用語及數學、計算機等領域一般用法不甚相同,故譯文或加注釋或添引號,以強調其特殊含義。

翻譯過程中,得到機械工業出版社華章公司諸君勉勵,于此深表謝意。

本書主要由愛飛翔翻譯,舒亞林、張軍、王鵬亦參與部分翻譯工作。小弟樂意與各位朋友通過個人網站(www.agilemobidev.com)及電子郵件(eastarstormlee@gmail?com)探討算法問題。由于時間倉促,水平有限,錯誤與疏漏在所難免,敬請讀者不吝賜教。

愛飛翔

2014年2月

媒體評論

"這是及時本宣稱能講解計算機算法隱晦細節的書,而且講得還真不錯。我知道的每一條技巧書里都提到了,而且還講了好多好多我不知道的。不論是在開發程序庫或編譯器,還是在極力搜求優雅算法,此書都可謂天賜良冊,應放在高德納所著《計算機程序設計藝術》那套書旁邊。本書及時版刊印后的10年間,它對我在Sun和Google的工作大有裨益,而第二版所添加新內容亦令我驚羨不已。"

—— Joshua Bloch

"初看本書書名時,我想,這是教人怎么入侵計算機系統的書嗎?不太可能吧。嗯,那就肯定是一本編程小技巧的集錦。看了之后發現,沒錯,這就是一本編程秘籍,然而卻是一本包羅萬象的秘籍。第二版新增了兩個大主題,并用數十個小技巧豐富了本書內容,其中有個小絕招是如何在不溢出的情況下求兩數均值,我寫二分查找算法時直接就把這條拿來用了。這真是本令算法愛好者開懷暢讀的書啊!"

—— Guy Steele "這是及時本宣稱能講解計算機算法隱晦細節的書,而且講得還真不錯。我知道的每一條技巧書里都提到了,而且還講了好多好多我不知道的。不論是在開發程序庫或編譯器,還是在極力搜求優雅算法,此書都可謂天賜良冊,應放在高德納所著《計算機程序設計藝術》那套書旁邊。本書及時版刊印后的10年間,它對我在Sun和Google的工作大有裨益,而第二版所添加新內容亦令我驚羨不已。"

—— Joshua Bloch

"初看本書書名時,我想,這是教人怎么入侵計算機系統的書嗎?不太可能吧。嗯,那就肯定是一本編程小技巧的集錦。看了之后發現,沒錯,這就是一本編程秘籍,然而卻是一本包羅萬象的秘籍。第二版新增了兩個大主題,并用數十個小技巧豐富了本書內容,其中有個小絕招是如何在不溢出的情況下求兩數均值,我寫二分查找算法時直接就把這條拿來用了。這真是本令算法愛好者開懷暢讀的書啊!"

—— Guy Steele

網友評論(不代表本站觀點)

免責聲明

更多出版社
主站蜘蛛池模板: 东城区| 西和县| 阜新市| 财经| 弥渡县| 兰州市| 格尔木市| 明溪县| 东台市| 德兴市| 靖西县| 伊川县| 社会| 延寿县| 新乐市| 金寨县| 石泉县| 花莲市| 黑河市| 东兰县| 曲水县| 灌南县| 新昌县| 衡东县| 寿阳县| 松桃| 龙胜| 新营市| 中超| 井研县| 济南市| 平利县| 兴宁市| 阳泉市| 江西省| 彰化市| 克东县| 祁东县| 株洲县| 喜德县| 龙州县|