本書采用大量圖片,通過詳細(xì)的分步講解,以直觀、易懂的方式展現(xiàn)了各種數(shù)據(jù)結(jié)構(gòu)和算法的基本原理。第1章介紹了鏈表、數(shù)組、棧等數(shù)據(jù)結(jié)構(gòu);從第2章到第8章,分別介紹了和排序、查找、圖、安全、聚類、數(shù)據(jù)壓縮等相關(guān)算法,較為全面地介紹常見算法與數(shù)據(jù)結(jié)構(gòu)知識(shí)。
本書沒有枯燥的理論和復(fù)雜的公式,而是通過大量的步驟圖幫助讀者加深對(duì)數(shù)據(jù)結(jié)構(gòu)原理和算法執(zhí)行過程的理解,易于理解,便于學(xué)習(xí)和記憶。將本書作為算法入門的第一步,是非常不錯(cuò)的選擇。
1.直觀易懂,算法學(xué)習(xí)不再難:圖文并茂,將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和算法原理簡化為易于理解的步驟圖,讓讀者在輕松愉快的氛圍中掌握算法的核心。
2.全面覆蓋,算法基礎(chǔ)詳盡講解:內(nèi)容全面,從基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)到高級(jí)的算法應(yīng)用,如圖論、安全、聚類和數(shù)據(jù)壓縮等,為讀者提供了一個(gè)全面的算法知識(shí)體系。
3.修訂升級(jí),內(nèi)容更加完善:在原有基礎(chǔ)上進(jìn)行全面的增補(bǔ)和更新,確保內(nèi)容的時(shí)效性和實(shí)用性。無論是新的算法動(dòng)態(tài),還是常見的編程實(shí)踐,都力求為讀者提供前沿的知識(shí)。
4.零基礎(chǔ)友好,自學(xué)輕松上手:摒棄枯燥的理論和復(fù)雜的代碼,采用簡單易懂的文字和生動(dòng)的圖示,讓算法學(xué)習(xí)變得輕松有趣。無論你是編程新手還是希望鞏固算法基礎(chǔ)的從業(yè)者,本書都是自學(xué)算法的理想選擇。
石田保輝,自由職業(yè)工程師,現(xiàn)居日本東京。2011年畢業(yè)于日本京都大學(xué)研究生院。輾轉(zhuǎn)于幾個(gè)創(chuàng)新型企業(yè)后獨(dú)立,成為自由職業(yè)者。2016年,個(gè)人制作的面向工程師的學(xué)習(xí)型App“算法動(dòng)畫圖解”上架,不到1年時(shí)間全球下載量即達(dá)到50萬次,并入選了“App Store日本區(qū)2016年度應(yīng)用”榜單。
宮崎修一,日本京都大學(xué)學(xué)術(shù)信息媒體中心副教授。1998年從日本九州大學(xué)博士生院工學(xué)專業(yè)畢業(yè)后,開始擔(dān)任日本京都大學(xué)研究生院信息學(xué)研究科助手,2002年起擔(dān)任現(xiàn)職。主要研究算法和計(jì)算復(fù)雜性理論。近期的重點(diǎn)研究對(duì)象為相似算法和在線算法。主要作品有《程序員的數(shù)學(xué)4:圖論入門》。
序章 算法的基本知識(shí)001
0-1 什么是算法 002
0-2 運(yùn)行時(shí)間的計(jì)算方法 007
第 1章 數(shù)據(jù)結(jié)構(gòu) 009
1-1 什么是數(shù)據(jù)結(jié)構(gòu) 010
1-2 鏈表 013
1-3 數(shù)組 016
1-4 棧 020
1-5 隊(duì)列 022
1-6 哈希表 024
1-7 堆 032
1-8 二叉查找樹 036
第 2章 排序 043
2-1 什么是排序 044
2-2 冒泡排序 046
2-3 選擇排序 050
2-4 插入排序 052
2-5 堆排序 056
2-6 歸并排序 060
2-7 快速排序 064
第3章 數(shù)組的查找 071
3-1 線性搜索 072
3-2 二分搜索 074
第4章 圖算法 077
4-1 什么是圖 078
4-2 廣度優(yōu)先搜索 082
4-3 深度優(yōu)先搜索 086
4-4 貝爾曼- 福特算法 090
4-5 狄杰斯特拉算法 096
4-6 A* 算法103
4-7 克魯斯卡爾算法 107
4-8 普里姆算法 111
4-9 匹配算法 115
第5章 安全算法 123
5-1 安全和算法 124
5-2 加密的基礎(chǔ)知識(shí) 128
5-3 哈希函數(shù) 132
5-4 共享密鑰加密 136
5-5 公開密鑰加密 140
5-6 混合加密 148
5-7 迪菲- 赫爾曼密鑰交換 152
5-8 消息鑒別碼 160
5-9 數(shù)字簽名 168
5-10 數(shù)字證書 174
第6章 聚類 181
6-1 什么是聚類 182
6-2 k 均值聚類算法 184
第7章 數(shù)據(jù)壓縮 189
7-1 數(shù)據(jù)壓縮與編碼 190
7-2 游程編碼 192
7-3 唯一可譯碼 196
7-4 即時(shí)碼 200
7-5 赫夫曼編碼 204
第8章 其他算法 209
8-1 歐幾里得算法 210
8-2 素性檢驗(yàn) 214
8-3 字符串匹配 218
8-4 KMP 算法 220
8-5 頁面排序算法 226
8-6 漢諾塔 234