從你開(kāi)始學(xué)習(xí)編程的那一刻起,就注定了以后所要走的路:從編程初學(xué)者開(kāi)始,依次經(jīng)
歷實(shí)習(xí)生、程序員、軟件工程師、架構(gòu)師、CTO 等職位的磨礪。當(dāng)你站在職位頂峰的位置驀
然回首,才會(huì)發(fā)現(xiàn)自己的成功并不是偶然,在程序員的成長(zhǎng)之路上會(huì)有不斷修改代碼、尋找
并解決 Bug、不停測(cè)試程序和修改項(xiàng)目的經(jīng)歷。不可否認(rèn)的是,只要你在自己的開(kāi)發(fā)生涯中
穩(wěn)扎穩(wěn)打,并且善于總結(jié)和學(xué)習(xí),最終將會(huì)得到可喜的收獲。
■
選擇一本合適的書(shū)
對(duì)于一名程序開(kāi)發(fā)初學(xué)者來(lái)說(shuō),應(yīng)如何學(xué)習(xí)并提高自己的開(kāi)發(fā)技術(shù)呢?答案就是買(mǎi)一本
合適的程序開(kāi)發(fā)書(shū)籍進(jìn)行學(xué)習(xí)。但是,市面上許多面向初學(xué)者的編程書(shū)籍中大多都是基礎(chǔ)知
識(shí)講解,偏向于理論,讀者讀完以后面對(duì)實(shí)戰(zhàn)項(xiàng)目時(shí)還是無(wú)從下手。如何實(shí)現(xiàn)從理論過(guò)渡到
項(xiàng)目實(shí)戰(zhàn),是初學(xué)者迫切需要了解的;鑒于此,筆者梳理自己對(duì)算法的理解思路,同時(shí)加入
實(shí)踐項(xiàng)目的經(jīng)驗(yàn),編寫(xiě)了本書(shū),它將面向具有一定 Python 編程經(jīng)驗(yàn)的初級(jí)程序員,講解了
Python 算法的核心知識(shí)和技巧,這些知識(shí)能夠幫助讀者迅速掌握 Python 算法的精髓,編寫(xiě)
出更加優(yōu)質(zhì)的代碼。
■
本書(shū)的特色
(1)以“入門(mén)到精通”的寫(xiě)作方法構(gòu)建內(nèi)容
為了讓讀者能夠完全看懂書(shū)中的內(nèi)容,筆者遵循“入門(mén)到精通”基礎(chǔ)類(lèi)圖書(shū)的寫(xiě)法,循
序漸進(jìn)地講解 Python 開(kāi)發(fā)語(yǔ)言的基本知識(shí)。
(2)實(shí)例教學(xué),經(jīng)典并深入
以實(shí)例教學(xué)為導(dǎo)向,通過(guò)具體實(shí)例講解了各種算法思想的基本知識(shí)和核心用法。通過(guò)具
體實(shí)例的講解和剖析,幫助讀者真正掌握 Python 算法的核心內(nèi)容。
(3)視頻講解,二維碼布局全書(shū)
書(shū)中每一個(gè)二級(jí)目錄下都有一個(gè)二維碼,通過(guò)二維碼掃描可以觀看講解視頻,既包括實(shí)
例講解也包括教程講解,對(duì)讀者的開(kāi)發(fā)水平實(shí)現(xiàn)了拔高處理。
(4)售后答疑幫助讀者快速解決學(xué)習(xí)問(wèn)題
無(wú)論是書(shū)中的疑惑,還是在學(xué)習(xí)過(guò)程中遇到的問(wèn)題,筆者將在第一時(shí)間為讀者答疑解惑,
這也是筆者對(duì)讀者的承諾。
I
文前(1).indd 1
2020-8-3 15:00:20
??
Python 常用算法手冊(cè)
(5)QQ 群 + 網(wǎng)站論壇實(shí)現(xiàn)教學(xué)互動(dòng),形成互學(xué)、互幫的朋友圈
為了方便給讀者答疑,筆者提供了網(wǎng)站論壇、QQ 群等技術(shù)支持(通過(guò) QQ:729017304
獲得) 并且隨時(shí)在線與初學(xué)者互動(dòng)。,讓大家在互學(xué)、互幫中形成一個(gè)良好的學(xué)習(xí)編程的氛圍。
■
整體下載包
為了方便不同網(wǎng)絡(luò)環(huán)境的讀者學(xué)習(xí),也為了提升圖書(shū)的附加價(jià)值,筆者將書(shū)中 108 個(gè)掃
碼視頻和源代碼整理成整體下載包,讀者可以通過(guò)封底二維碼和下載鏈接獲取學(xué)習(xí)。
備用網(wǎng)盤(pán)下載地址:https://pan.baidu.com/s/1kQH1XkWpYQ3FJMSRcl_CQg
提取碼:mwsg
■
讀者對(duì)象
本書(shū)以學(xué)習(xí)筆記的形式系統(tǒng)講解了 Python 語(yǔ)言實(shí)踐中的算法思想,旨在幫助有一定經(jīng)
驗(yàn)的初級(jí)程序員夯實(shí)算法思維基礎(chǔ),并通過(guò)大量經(jīng)典演練案例迅速積累經(jīng)驗(yàn),提升編程能力。
■
致謝與批評(píng)
特別感謝中國(guó)鐵道版社有限公司編輯的大力支持,正是各位編輯的求是、耐心和效率,
才使得本書(shū)能夠在這么短的時(shí)間內(nèi)出版。另外,也十分感謝我的家人給予的巨大支持。由于
水平有限,書(shū)中存在紕漏之處在所難免,懇請(qǐng)讀者提出寶貴的意見(jiàn)或建議,以便修訂并使之
日臻完善。
最后感謝讀者選擇了這本書(shū),更希望它能成為您編程路上的引導(dǎo)者,那么筆者將不勝榮
幸,祝您閱讀快樂(lè)!
第 1 章 初步認(rèn)識(shí)算法思想
1.1 什么是算法 1
1.2 算法是程序的靈魂 3
1.3 算法的表示方法 4
1.4 Python 算法思想 6
第 2 章 枚舉算法思想
2.1 枚舉算法基礎(chǔ) 11
2.2 算法演練——找出符合條件的 5 位數(shù) 12
2.3 算法演練——24 點(diǎn)游戲 .13
2.4 算法演練——解決熄燈問(wèn)題 .19
2.5 算法演練——解決“討厭的青蛙”問(wèn)題 .23
第 3 章 遞歸算法思想
3.1 遞歸算法思想基礎(chǔ) 27
3.2 算法演練——解決“斐波那契數(shù)列”問(wèn)題 .28
3.3 算法演練——解決“漢諾塔”問(wèn)題 .29
3.4 算法演練——解決“階乘”問(wèn)題 .32
3.5 算法演練——進(jìn)制轉(zhuǎn)換器 .33
3.6 算法演練——分解數(shù)字 .34
3.7 算法演練——解決二叉樹(shù)遍歷問(wèn)題 .34
3.8 算法演練——最大公約數(shù)和最小公倍數(shù) .38
第 4 章 分治算法思想
4.1 分治算法思想基礎(chǔ) 41
4.2 算法演練——二分法找出有序列表指定值 .43
4.3 算法演練——求順序表中數(shù)據(jù)的最大值 .45
4.4 算法演練——查找列表中元素的最小值和最大值 .46
4.5 算法演練——找出一組序列中的第 k 小(大)的元素 .48
4.6 算法演練——快速排序 .51
4.7 算法演練——實(shí)現(xiàn)歸并排序 .53
4.8 算法演練——整數(shù)劃分 .54
第 5 章 貪心算法思想
5.1 貪心算法思想基礎(chǔ) 57
5.2 算法演練——解決“找零方案”問(wèn)題 .58
5.3 算法演練——解決“汽車(chē)加油”問(wèn)題 .59
5.4 算法演練——解決“求最大子元素之和問(wèn)題”問(wèn)題 .60
5.5 算法演練——解決“幼兒園分糖果”問(wèn)題 .61
5.6 算法演練——圣誕節(jié)的禮物 .62
5.7 算法演練——解決“活動(dòng)安排”問(wèn)題 .64
5.8 算法演練——解決“搖擺序列”問(wèn)題 .67
5.9 算法演練——移除 k 個(gè)數(shù)字 .69
5.10 算法演練——四種解決“霍夫曼編碼”問(wèn)題的方案 .70
5.11 算法演練——解決“Kruskal 算法”問(wèn)題 .78
5.12 算法演練——解決“Prim 算法”問(wèn)題 85
5.13 小結(jié) 89
第 6 章 回溯算法思想
6.1 回溯算法思想基礎(chǔ) 90
6.2 算法演練——破解“解空間” .92
6.3 算法演練——解決“全排列”問(wèn)題 .95
6.4 算法演練——解決“選排列”問(wèn)題 .97
6.5 算法演練——解決“最長(zhǎng)公共子序列(LCS)”問(wèn)題 .99
6.6 算法演練——解決“排課”問(wèn)題 .101
6.7 算法演練——解決“最佳作業(yè)調(diào)度”問(wèn)題 .103
6.8 算法演練——解決“圖的遍歷”問(wèn)題 .106
6.9 算法演練——解決“爬樓梯”問(wèn)題 .107
6.10 算法演練——解決“m 著色”問(wèn)題 .109
6.11 算法演練——解決“取物搭配”問(wèn)題 . 111
6.12 算法演練——解決“旅行商”問(wèn)題 . 112
6.13 算法演練——解決“野人與傳教士”問(wèn)題 . 114
6.14 算法演練——解決“騎士巡邏”問(wèn)題 . 116
6.15 算法演練——解決“八皇后”問(wèn)題的 4 種方案 . 118
6.16 算法演練——解決“迷宮”問(wèn)題 .127
第 7 章 迭代算法思想
7.1 迭代算法思想基礎(chǔ) 132
7.2 算法演練——解決“斐波那契數(shù)列”問(wèn)題 .133
7.3 算法演練——解決“角谷猜想”問(wèn)題 .134
7.4 算法演練——使用牛頓迭代法計(jì)算方程的根 .135
7.5 算法演練——使用牛頓迭代法求極值 .136
7.6 算法演練——使用牛頓迭代法求平方根 .138
7.7 算法演練——使用牛頓迭代法求極值并繪制曲線 .140
7.8 算法演練——使用牛頓迭代法求解輸入的方程 .142
7.9 算法演練——求方程在 x 附近的一個(gè)實(shí)根 .144
7.10 算法演練——解決“非線程方程組”問(wèn)題 .144
7.11 算法演練——使用雅克比 (Jacobi) 迭代法求解線性方程組 146
7.12 算法演練——使用 Gauss-Seidel 迭代法求解線性方程組148
第 8 章 查找算法
8.1 查找算法基礎(chǔ) 153
8.2 線性表查找:順序查找 154
8.3 線性表查找:折半查找算法 157
8.4 線性表查找:插值查找算法 161
8.5 線性表查找:分塊查找算法 162
8.6 基于樹(shù)的查找法:二叉排序樹(shù)算法 167
8.7 基于樹(shù)的查找法:平衡二叉排序樹(shù)算法 173
8.8 哈希查找算法 182
8.9 斐波那契查找算法 188
8.10 紅黑樹(shù)(Red-Black Tree)查找算法 .192
第 9 章 排序算法
9.1 排序基礎(chǔ) 202
9.2 插入排序算法 203
9.3 希爾排序 208
9.4 交換類(lèi)排序:冒泡排序算法 211
9.5 交換類(lèi)排序:快速排序算法 215
9.6 選擇排序算法 217
9.7 堆排序算法 222
9.8 歸并排序算法 228
9.9 基數(shù)排序算法 236
9.10 綜合比較各種排序方法 239
第 10 章 使用算法解決數(shù)據(jù)結(jié)構(gòu)問(wèn)題
10.1 約瑟夫環(huán) 241
10.2 操作順序表 244
10.3 操作鏈表 246
10.4 帶有尾結(jié)點(diǎn)引用的單鏈表 248
10.5使用多叉樹(shù)尋找最短路徑 250
10.6樹(shù)操作 251
第 11 章 解決數(shù)學(xué)問(wèn)題
11.1 一段神奇的字符 260
11.21000 以?xún)?nèi)的完全數(shù) .261
11.3多進(jìn)程驗(yàn)證哥德巴赫猜想 263
11.4 親密數(shù) 266
11.5解決自守?cái)?shù)問(wèn)題 267
11.6矩陣運(yùn)算 267
11.7一元多項(xiàng)式運(yùn)算 269
11.8素?cái)?shù)問(wèn)題 271
第 12 章 經(jīng)典算法問(wèn)題
12.1借書(shū)方案 279
12.2捕魚(yú)和分魚(yú) 280
12.3出售金魚(yú) 281
12.4平分七筐魚(yú) 282
12.5五家共井問(wèn)題 283
12.6三色球問(wèn)題 284
12.7計(jì)算年齡 285
12.8常勝將軍問(wèn)題 287
12.9三色旗問(wèn)題 288