算法是程序的靈魂,算法能夠告訴開發(fā)者在面對(duì)一個(gè)項(xiàng)目功能時(shí)用什么思路去實(shí)現(xiàn),有了這個(gè)思路后,編程工作只需遵循這個(gè)思路去實(shí)現(xiàn)即可。本書循序漸進(jìn)、由淺入深地詳細(xì)講解了算法實(shí)現(xiàn)的核心技術(shù),全書共12章,分別講解了初步認(rèn)識(shí)算法思想、枚舉算法思想、遞歸算法思想、分治算法思想、貪心算法思想、回溯算法思想、迭代算法思想、查找算法、排序算法、使用算法解決數(shù)據(jù)結(jié)構(gòu)問題、解決數(shù)學(xué)問題和經(jīng)典算法問題。全書通過具體實(shí)例的實(shí)現(xiàn)過程演練了各個(gè)知識(shí)點(diǎn)的具體使用流程,引領(lǐng)讀者全面掌握算法的核心技術(shù)。
本書旨在幫助有一定編程經(jīng)驗(yàn)的Python初級(jí)程序員系統(tǒng)學(xué)習(xí)算法思想,積累實(shí)戰(zhàn)經(jīng)驗(yàn),迅速提升編程技能,掌握Python算法的精髓。
第1章 初步認(rèn)識(shí)算法思想
1.1 什么是算法
1.1.1 一道趣味題
1.1.2 算法的定義
1.1.3 計(jì)算機(jī)中的算法
1.1.4 總結(jié)算法的特征
1.2 算法是程序的靈魂
1.3 算法的表示方法
1.3.1 用流程圖來表示算法
1.3.2 用N-S流程圖來表示算法
1.4 Python算法思想
1.4.1 常用的算法思想
1.4.2 衡量算法優(yōu)劣的標(biāo)準(zhǔn)
1.4.3 算法復(fù)雜度
1.4.4 時(shí)間復(fù)雜度與空間復(fù)雜度的取舍問題
1.5 小結(jié)
第2章 枚舉算法思想
2.1 枚舉算法基礎(chǔ)
2.1.1 枚舉算法介紹
2.1.2 Python中枚舉算法的實(shí)現(xiàn)思路
2.2 算法演練——找出符合條件的5位數(shù)
2.2.1 算法分析:首位數(shù)不能是誰
2.2.2 具體實(shí)現(xiàn)
2.3 算法演練——24點(diǎn)游戲
2.3.1 算法分析:加括號(hào)和去除重復(fù)表達(dá)式
2.3.2 具體實(shí)現(xiàn)
2.3.3 第二種方案:列表切片操作實(shí)現(xiàn)排列組合
2.3.4 第三種方案:itertools模塊實(shí)現(xiàn)排列組合
2.4 算法演練——解決熄燈問題
2.4.1 算法分析:規(guī)則中的規(guī)律
2.4.2 具體實(shí)現(xiàn)
2.5 算法演練——解決“討厭的青蛙”問題
2.5.1 算法分析:縮小解的空間
2.5.2 具體實(shí)現(xiàn)
2.6 小結(jié)
第3章 遞歸算法思想
3.1 遞歸算法思想基礎(chǔ)
3.2 算法演練——解決“斐波那契數(shù)列”問題
3.2.1 算法分析:找出兔子增加的規(guī)律
3.2.2 具體實(shí)現(xiàn)
3.3 算法演練——解決“漢諾塔”問題
3.3.1 算法分析:情景模擬移動(dòng)過程
3.3.2 具體實(shí)現(xiàn)
3.4 算法演練——解決“階乘”問題
3.4.1 算法分析:拆分調(diào)用
3.4.2 具體實(shí)現(xiàn):顯示6以內(nèi)階乘過程
3.5 算法演練——進(jìn)制轉(zhuǎn)換器
3.5.1 算法分析:除以2獲取余數(shù)
3.5.2 具體實(shí)現(xiàn):輸出十進(jìn)制數(shù)字10對(duì)應(yīng)的二進(jìn)制數(shù)
3.6 算法演練——分解數(shù)字
3.6.1 算法分析:遞歸除以10
3.6.2 具體實(shí)現(xiàn):分解5位整數(shù)12345
3.7 算法演練——解決二叉樹遍歷問題
3.7.1 算法分析:實(shí)現(xiàn)三種遍歷方式
3.7.2 實(shí)現(xiàn)樹的結(jié)構(gòu)
3.7.3 二叉樹遞歸遍歷方案
……
第4章 分治算法思想
第5章 貪心算法思想
第6章 回溯算法思想
第7章 迭代算法思想
第8章 查找算法
第9章 排序算法
第10章 使用算法解決數(shù)據(jù)結(jié)構(gòu)問題
第11章 解決數(shù)學(xué)問題
第12章 經(jīng)典算法問題