《Python算法的奇妙之旅》結(jié)合Python語言,從基礎(chǔ)算法講起,逐步深入6種常用算法思想,每種算法思想都佐以大量生動有趣的案例,讓讀者在學(xué)習(xí)Python語法及算法的同時,意識到算法的重要性,繼而對算法產(chǎn)生濃厚的興趣。
《Python算法的奇妙之旅》共11章,分為2篇。第1篇基礎(chǔ)知識,主要介紹Python、算法、數(shù)據(jù)結(jié)構(gòu)、時間復(fù)雜度和空間復(fù)雜度等關(guān)鍵的基礎(chǔ)概念,以及十大排序算法,讓讀者對算法有一個初步的了解;第2篇開始算法之旅,結(jié)合40多個典型案例及其對應(yīng)的100多種解題思路與方法,介紹遍歷法、迭代法、遞歸法、回溯法、貪心法和分治法6種算法思想,涉及算法的基本思想、關(guān)鍵特征、解題步驟和框架等。
《Python算法的奇妙之旅》內(nèi)容通俗易懂,案例豐富,實用性強,特別適合對Python語言和算法感興趣的入門與進階讀者閱讀,也適合C、C 、Java和PHP程序員及其他編程愛好者閱讀,另外還適合作為相關(guān)院校和培訓(xùn)機構(gòu)的教材。
40多個典型案例、100多種解題思路與方法、6種常用算法思想。
培養(yǎng)編程興趣,拓展編程思維,提高編程和算法設(shè)計能力。
每個案例都用Python語言實現(xiàn),專為算法初學(xué)者量身打造。
注重基礎(chǔ):對常用算法的概念、特征、應(yīng)用和設(shè)計策略做詳細介紹。
講解透徹:對常用算法涉及的各種數(shù)據(jù)結(jié)構(gòu)類型進行原理性分析。
案例豐富:用幽默風(fēng)趣的語言介紹40多個典型案例及涉及的算法。
趣味性強:選取的案例趣味性強,可以極大地提高讀者的編程興趣。
代碼詳盡:每個案例都給出詳細的代碼,并給出流程圖或示意圖。
隨著人工智能和大數(shù)據(jù)時代的到來,數(shù)據(jù)分析越來越流行,自動化迅速崛起,這帶火了得天獨厚的Python語言。從小型創(chuàng)業(yè)公司到如日中天的大型企業(yè),從戰(zhàn)略規(guī)劃的新興產(chǎn)業(yè)到生機勃勃的成長產(chǎn)業(yè)乃至舉足輕重的支柱產(chǎn)業(yè),都對Python技術(shù)人員青睞有加。不論你所在的行業(yè)是自媒體、醫(yī)療、政務(wù)、金融還是其他新興行業(yè),也不論你從事的工作是開發(fā)、維護、運營、產(chǎn)品還是其他新興崗位,你都能看到Python算法的身影。在許多互聯(lián)網(wǎng)公司中,從業(yè)人員能熟練掌握Python并融會貫通各種算法的思路,會成為他們的一個加分項。
目前圖書市場上關(guān)于Python算法的相關(guān)圖書不少,但真正從實際應(yīng)用出發(fā),通過各種算法思想和案例來指導(dǎo)讀者提高算法設(shè)計能力的圖書卻鳳毛麟角!禤ython算法的奇妙之旅》以實戰(zhàn)為主旨,通過6種常用算法思想,并佐以典型案例,幫助讀者全面、深入、透徹地掌握各種典型算法的思路和應(yīng)用,提高讀者解決實際問題的能力。
《Python算法的奇妙之旅》特色
1.對Python算法涉及的概念和數(shù)據(jù)結(jié)構(gòu)做原理性分析
《Python算法的奇妙之旅》從一開始便對Python算法的概念、特征、應(yīng)用和設(shè)計策略做了基本介紹,并對涉及的各種數(shù)據(jù)結(jié)構(gòu)類型進行原理性分析,幫助讀者夯實基礎(chǔ),為后續(xù)學(xué)習(xí)算法思想和演練典型案例打好基礎(chǔ)。
2.結(jié)合大量典型案例介紹Python熱門算法的思想
《Python算法的奇妙之旅》結(jié)合大量案例介紹排序、遍歷、迭代、遞歸、回溯、貪心和分治等熱門算法的思想,并詳解水仙花數(shù)、埃及分?jǐn)?shù)、雞兔同籠、階乘算法、輾轉(zhuǎn)相除法、斐波那契數(shù)列、漢諾塔問題、八皇后問題和背包問題等典型案例的求解過程。
3.分類驅(qū)動,邏輯性強
《Python算法的奇妙之旅》首先介紹十大排序算法和10種數(shù)字相關(guān)的算法,然后介紹遍歷、迭代、遞歸、回溯、貪心、分治算法思想,這些都是Python算法學(xué)習(xí)必須要掌握的知識。書中還對各類算法的異同進行了對比,幫助讀者對算法進行邏輯梳理。
4.案例典型,實用性強
《Python算法的奇妙之旅》詳解40多個典型案例及其對應(yīng)的100多種解題思路與方法,它們均來自筆者在學(xué)習(xí)、生活和工作中的親身體驗和奇思妙想,具有很高的應(yīng)用價值和參考性。這些案例使用不同的思想和解法組合實現(xiàn),便于讀者融會貫通地理解《Python算法的奇妙之旅》中介紹的算法,讀者對這些案例稍加修改,便可應(yīng)用于實際開發(fā)中。
5.注釋詳細,圖示豐富,容易理解
《Python算法的奇妙之旅》中的案例源代碼逐行進行了詳細的注釋,并給出流程圖或示意圖,便于讀者直觀地理解所講內(nèi)容,從而提高學(xué)習(xí)效率。
6.提供完善的技術(shù)支持和售后服務(wù)
《Python算法的奇妙之旅》提供專門的技術(shù)支持郵箱(hzbook2017@163.com)與微信公眾號,讀者在閱讀本書的過程中若有任何疑問,可以通過郵箱或公眾號獲得幫助。
《Python算法的奇妙之旅》內(nèi)容
第1篇 基礎(chǔ)知識
本篇涵蓋第1~4章。第1~3章主要介紹Python、算法、數(shù)據(jù)結(jié)構(gòu)、時間復(fù)雜度和空間復(fù)雜度等基礎(chǔ)概念,其中涵蓋整型、布爾值、字符串、列表、元組、字典、集合等數(shù)據(jù)類型,以及表、樹、圖等數(shù)據(jù)結(jié)構(gòu);第4章主要介紹十大排序算法,包括冒泡排序、快速排序、直接插入排序、希爾排序、簡單選擇排序、堆排序、歸并排序、計數(shù)排序、桶排序和基數(shù)排序。
第2篇 開始算法之旅
本篇涵蓋第5~11章。第5章主要介紹10種與數(shù)字相關(guān)的算法,包括素數(shù)、完美數(shù)、自守數(shù)、快樂數(shù)、水仙花數(shù)、埃及分?jǐn)?shù)、階乘算法、輾轉(zhuǎn)相除法、兔子序列和數(shù)獨,旨在表達數(shù)字之美;第6~11章主要介紹六種常用算法思想,包括遍歷法、迭代法、遞歸法、回溯法、貪心法和分治法,涉及其基本思想、關(guān)鍵特征、解題步驟和算法框架等內(nèi)容,講解時以6種算法思想為依據(jù),列舉40多個典型案例及其對應(yīng)的100多種解題思路和方法。
《Python算法的奇妙之旅》讀者
準(zhǔn)備從事數(shù)據(jù)分析、AI和算法等工作的人員;
Python、C 、Java和PHP等程序員;
數(shù)據(jù)專員和數(shù)據(jù)分析工程師;
運營、產(chǎn)品和研發(fā)人員;
對算法有濃厚興趣和需求的人員;
廣大數(shù)學(xué)愛好者;
希望提升邏輯思維的人員;
高等學(xué)校相關(guān)專業(yè)的學(xué)生;
專業(yè)培訓(xùn)機構(gòu)的學(xué)員。
配書資源獲取方式
《Python算法的奇妙之旅》涉及的所有源代碼都需要讀者自行下載。請在機械工業(yè)出版社華章分社(www. hzbook.com)上搜索到本書,然后單擊資料下載按鈕,即可在本書頁面上找到下載鏈接。
售后支持
讀者閱讀《Python算法的奇妙之旅》時若有疑問,可以發(fā)電子郵件(郵箱地址見前文)獲得幫助,也可以通過筆者的微信公眾號提出,筆者會不定期解答。另外,書中若有疏漏和不當(dāng)之處,也請讀者及時反饋,以便后期修訂。
王小川 現(xiàn)任某500強國有企業(yè)的數(shù)據(jù)分析兼系統(tǒng)管理工程師。有5年的數(shù)據(jù)分析和數(shù)據(jù)庫管理經(jīng)驗,擅長Python爬蟲技術(shù)和算法,以及pandas、NumPy和sklearn等第三方庫,能熟練使用TensorFlow框架。主要研究方向包括數(shù)據(jù)挖掘、機器學(xué)習(xí)和辦公自動化等,對數(shù)據(jù)獲取和應(yīng)用有豐富的實戰(zhàn)經(jīng)驗與獨到的見解。
前言
第1篇 基礎(chǔ)知識
第1章 概述 2
1.1 書本簡介 4
1.1.1 書本涉及的內(nèi)容 4
1.1.2 書本不涉及的內(nèi)容 5
1.2 本書的優(yōu)勢 5
1.3 需要做的準(zhǔn)備工作 6
1.4 本章小結(jié) 10
第2章 何為算法 11
2.1 什么是算法 11
2.1.1 算法的概念 11
2.1.2 算法的特征 12
2.1.3 算法的應(yīng)用 12
2.1.4 算法的設(shè)計策略 13
2.2 空間復(fù)雜度和時間復(fù)雜度 13
2.2.1 空間復(fù)雜度 13
2.2.2 時間復(fù)雜度 15
2.3 算法趣聞 18
2.4 本章小結(jié) 20
第3章 數(shù)據(jù)結(jié)構(gòu)是算法的骨骼 21
3.1 Python的基本數(shù)據(jù)類型 21
3.1.1 int類 22
3.1.2 bool類 22
3.1.3 str類 23
3.1.4 list類 28
3.1.5 tuple類 29
3.1.6 dict類 31
3.1.7 set類 33
3.1.8 小結(jié) 35
3.2 數(shù)據(jù)結(jié)構(gòu)線性表 36
3.2.1 一般線性表 36
3.2.2 受限線性表 41
3.3 數(shù)據(jù)結(jié)構(gòu)樹 44
3.4 數(shù)據(jù)結(jié)構(gòu)圖 47
3.4.1 按存儲路徑方向分類 48
3.4.2 按存儲結(jié)構(gòu)分類 49
3.5 本章小結(jié) 50
第4章 十大排序算法 52
4.1 非線性時間比較類排序 52
4.1.1 冒泡排序 53
4.1.2 快速排序 55
4.1.3 直接插入排序 59
4.1.4 希爾排序 65
4.1.5 簡單選擇排序 70
4.1.6 堆排序 72
4.1.7 歸并排序 79
4.2 線性時間非比較類排序 84
4.2.1 計數(shù)排序 84
4.2.2 桶排序 87
4.2.3 基數(shù)排序 90
4.3 本章小結(jié) 92
第2篇 開始算法之旅
第5章 數(shù)字的魅力 94
5.1 情有獨鐘的素數(shù) 94
5.2 卓絕罕有的完美數(shù) 98
5.3 潔身自好的吳柳 103
5.4 自戀成狂的水仙花數(shù) 106
5.5 回歸本真的快樂數(shù) 108
5.6 古埃及的神秘智慧Ⅰ 114
5.7 極限膨脹的階乘Ⅰ 118
5.8 RSA加密的鑰匙Ⅰ 121
5.9 瘋狂繁殖的兔子Ⅰ 124
5.10 數(shù)獨是如此簡單Ⅰ 128
5.11 本章小結(jié) 129
第6章 遍歷算法 131
6.1 黑板上的排列組合 131
6.2 雞兔同籠 137
6.2.1 抬起腳來 137
6.2.2 萬變不離其宗 142
6.3 我要的是獨一無二 144
6.4 鴛鴦巧促成雙對Ⅰ 156
6.5 二叉樹的遍歷 159
6.5.1 前序遍歷 163
6.5.2 中序遍歷 165
6.5.3 后序遍歷 167
6.5.4 層次遍歷 169
6.5.5 知二求一 171
6.6 迷宮最短路徑問題 172
6.7 本章小結(jié) 176
第7章 迭代算法 178
7.1 猴子摘桃 179
7.2 阿米巴分裂 183
7.3 誰才是真正的明星 185
7.4 數(shù)獨是如此簡單Ⅱ 186
7.5 淺談迭代與遍歷 195
7.6 本章小結(jié) 195
第8章 遞歸算法 197
8.1 極限膨脹的階乘Ⅱ 197
8.2 RSA加密的鑰匙Ⅱ 198
8.3 瘋狂繁殖的兔子Ⅱ 199
8.4 漢諾塔通關(guān)攻略 201
8.5 握握手,好朋友 205
8.6 一起去看場電影吧 208
8.7 請展示所有排列 212
8.8 我該帶走什么 217
8.9 小青蛙跳跳跳 223
8.10 淺談遞歸與迭代 228
8.11 本章小結(jié) 230
第9章 回溯算法 231
9.1 素數(shù)環(huán)問題 232
9.2 全排列問題Ⅰ 235
9.3 八皇后問題 237
9.4 往事成風(fēng),我該如何選擇Ⅰ 241
9.5 迷宮逃亡 244
9.6 騎士周游列國Ⅰ 247
9.7 淺談回溯與遍歷、遞歸及迭代 251
9.8 本章小結(jié) 253
第10章 貪心算法 255
10.1 古埃及的神秘智慧Ⅱ 256
10.2 騎士周游列國Ⅱ 259
10.3 往事成風(fēng),我該如何選擇Ⅱ 263
10.4 你要的全拿走 266
10.5 敢問路在何方 269
10.6 克魯斯卡爾算法 274
10.7 淺談貪心與迭代、回溯及遍歷 279
10.8 本章小結(jié) 280
第11章 分治算法 282
11.1 鴛鴦巧促成雙對Ⅱ 283
11.2 全排列問題Ⅱ 289
11.3 你能找到它嗎 290
11.4 你們都被我包圍了 294
11.5 最大連續(xù)子序列之和 303
11.6 淺談分治與遞歸、遍歷及貪心 307
11.7 本章小結(jié) 308