你也能看得懂的Python算法書

你也能看得懂的Python算法書

《你也能看得懂的Python算法書》2018年11月出版,面向算法初學者,主要內容是Python語言、雙指針問題、哈希算法、深度優先算法廣度優先算法、回溯算法、貪心算法、動態規划算法和最短路徑算法等。

基本介紹

  • 中文名:你也能看得懂的Python算法書
  • 作者:王碩,董文馨,張舒行,張潔
  • 類別:python算法
  • 出版社:電子工業出版社
  • 出版時間:2018年11月
  • 頁數:260 頁
  • 定價:59 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787121352553
出版背景,作者簡介,圖書目錄,

出版背景

編程的核心是算法,學習算法能教會你解決問題的方法。全書包括9大類算法。
為什麼要寫這本書
算法是編程的核心,就像一台計算機的CPU,算法的好壞決定了一個系統的效率高低。
許多人認為學習編程就是學習最新的程式語言、技術和框架,其實計算機算法更重要。計算機語言和技術日新月異,但萬變不離其宗的是算法。修煉好算法這門“內功”,再輔以新技術這些“招式”,才能獨霸“武林”。這也是為什麼像Google和Facebook這類大公司在面試中主要會考查算法問題的原因。
目前圖書市場上關於算法的圖書不少,經典的如《算法導論》。但是大多數算法圖書太學術、太複雜,對於初學者來說門檻太高。學習算法本身就不是一件容易的事情,再加上複雜的場景和數學理論,會讓算法的學習曲線更陡。因此本書的作者們就萌生了寫一本讓大家都能看懂的算法書的想法,以生動的語言把算法的思想過程寫出來,讓學習算法不再那么枯燥。
在本書的創作過程中,王碩老師迎來了人生的第一個寶寶小朗朗。於是幾位作者就有了一個心愿,希望青少年朋友也學會算法,因此,在描述算法問題時,儘量用簡單、通俗的形式表述,使青少年朋友也能看懂,也希望如此這般能夠增加讀者的學習興趣。既然是學習算法,免不了要寫代碼,對於程式語言的選擇,我們選擇了Python這門簡單易懂的語言作為本書的程式語言。對於初學編程的人來說,Python可以縮短學習程式語言的時間和降低學習編程的難度。
學習算法不易,且行且珍惜。

作者簡介

王碩,資深軟體工程師、北京理工大學客座講師,致力於企業級軟體開發和計算機教育工作,具有SONY中國研究院、四大國有銀行軟體開發中心工作經歷。
張潔,中科院軟體所博士,計算機科班出身,多年國有大型銀行信息系統開發及管理經驗。發表SCI, EI檢索論文十餘篇,在計算機圖形學、信息系統架構方面有較深造詣。
董文馨,現任IB高中生,學校編程俱樂部創辦人。從10歲開始在國外上學,精通英語,西班牙語,對數學,物理,和電腦科學有天賦。曾創辦個人文化交流網站,未來打算從事人工智慧領域的工作。
張舒行,五年多機器人比賽經驗,長時間負責隊內編程,曾參加FLL, VEX,現為FRC隊伍5823隊員。擅長數學,曾在各大競賽中獲獎。

圖書目錄

第1章 編程基礎 1
1.1 變數 1
1.1.1 輸出和輸入 2
1.1.2 簡單變數類型 3
1.1.3 數學計算 6
1.1.4 位運算 7
1.1.5 使用字元串 11
1.2 三大結構 15
1.2.1 循序結構 15
1.2.2 分支結構 16
1.2.3 條件判斷 18
1.2.4 套用分支結構 20
1.2.5 循環結構 21
1.2.6 continue和break 23
1.2.7 套用循環結構 24
1.2.8 結構的嵌套 26
1.3 列表 27
1.3.1 定義列表 27
1.3.2 對元素進行操作 28
1.3.3 列表的順序 31
1.3.4 列表內置函式 33
1.3.5 截取和拼接列表 36
1.3.6 字元串、元組和列表 38
1.3.7 用循環遍歷列表 40
1.3.8 字典簡介 41
1.4 函式 43
1.4.1 定義子函式 43
1.4.2 主函式 44
1.4.3 調用函式 45
1.4.4 全局變數 47
1.4.5 函式的運用 48
第2章 雙指針問題 53
2.1 數組合併 53
2.1.1 合併有序數組 53
2.1.2 最終代碼 56
2.2 二分查找 56
2.2.1 什麼是二分查找 57
2.2.2 問題求解 58
2.2.3 最終代碼 60
2.3 鍊表 60
2.3.1 什麼是單鍊表 60
2.3.2 建立單鍊表 61
2.3.3 建立雙鍊表 63
2.3.4 雙向輸出雙鍊表 65
2.3.5 向單鍊表中添加元素 66
2.3.6 向雙鍊表中添加元素 69
2.3.7 刪除列表中的元素 71
第3章 哈希算法 75
3.1 什麼是哈希 75
3.2 兩個數的和 78
3.2.1 問題求解1 78
3.2.2 解法1的最終代碼 80
3.2.3 問題求解2 81
3.2.4 解法2的最終代碼 82
3.3 單詞模式匹配 82
3.3.1 問題求解 83
3.3.2 最終代碼 85
3.4 猜詞遊戲 85
3.4.1 問題求解 87
3.4.2 最終代碼 88
3.5 神奇的詞根 89
3.5.1 問題求解 90
3.5.2 最終代碼 92
第4章 深度優先遍歷算法 93
4.1 什麼是深度優先遍歷 93
4.2 二叉樹 95
4.2.1 二叉樹的類型 95
4.2.2 二叉樹的相關術語 96
4.2.3 二叉樹的節點代碼 97
4.2.4 二叉樹的遍歷順序 97
4.2.5 深度優先遍歷與廣度優先遍歷 97
4.3 怎么抓住小偷 98
4.3.1 解題思路 98
4.3.2 從思路到代碼 102
4.4 二叉樹中的最大路徑和 102
4.4.1 解題思路 103
4.4.2 完整代碼 112
4.5 最大的島嶼 113
4.5.1 解題思路 113
4.5.2 完整代碼 116
第5章 廣度優先遍歷算法 118
5.1 什麼是廣度優先遍歷 118
5.2 選課的智慧 120
5.2.1 廣度優先遍歷 121
5.2.2 問題求解 122
5.2.3 最終代碼 124
5.3 尋找制高點 125
5.3.1 問題求解 126
5.3.2 集合 129
5.3.3 最終代碼 130
5.4 合法的括弧 131
5.4.1 問題求解 131
5.4.2 最終代碼 135
5.5 樹的右側 136
5.5.1 問題求解 136
5.5.2 最終代碼 139
第6章 回溯算法 141
6.1 什麼是回溯 141
6.2 遍歷所有排序方式 142
6.2.1 問題求解 142
6.2.2 最終代碼 144
6.3 經典問題的組合 147
6.3.1 問題求解 147
6.3.2 最終代碼 149
6.4 查找單詞問題 151
6.4.1 問題求解 152
6.4.2 最終代碼 155
6.5.1 問題求解 158
6.5.2 最終代碼 160
6.6 教你解數獨 164
6.6.1 問題求解 165
6.6.2 最終代碼 168
第7章 貪心算法 172
7.1 硬幣找零問題 173
7.1.1 問題描述 173
7.1.2 最終代碼 175
7.2 活動安排問題 175
7.2.1 問題描述 176
7.2.2 最終代碼 177
7.3.1 問題描述 178
7.3.2 哈夫曼樹 179
7.3.3 貪心選擇性質 181
7.3.4 最優子結構性質 182
7.3.5 最終代碼 183
第8章 動態規划算法 185
8.1 爬樓梯問題 185
8.1.1 問題描述 186
8.1.2 最終代碼 188
8.2 礦工挖礦問題 189
8.2.1 問題描述 189
8.2.2 最終代碼 195
8.3 背包問題 195
8.3.1 問題描述 195
8.3.2 問題實例 196
8.3.3 最終代碼 201
8.4 最長遞歸子序列問題 202
8.4.1 問題描述 202
8.4.2 改進算法 204
8.4.3 最終代碼 205
第9章 最短路徑問題 207
9.1 迪可斯特朗算法 207
9.1.1 術語釋義 208
9.1.2 問題示例:最短公交線路 208
9.1.3 圖與節點的定義 209
9.1.4 把圖用代碼“畫”出來 210
9.1.5 算法核心:兩個節點集合 210
9.1.6 算法核心:循環 210
9.1.7 輸出路線 211
9.1.8 通過示例理解算法 211
9.1.9 完整代碼展示 214
9.2 Floyd算法 216
9.2.1 算法核心:兩個矩陣 216
9.2.2 算法核心:通過中介點縮短距離 217
9.2.3 通過示例理解算法 218
9.2.4 完整代碼 222
9.3 A*算法 223
9.3.1 算法核心:迪可斯特朗算法 223
9.3.2 算法核心:預估函式 224
9.3.3 算法核心:選擇預估函式 226
9.3.4 A*算法的兄弟們 226
第10章 分治算法 227
10.1 什麼是分治 227
10.2 歸併排序 228
10.2.1 遞歸法與疊代法 228
10.2.2 遞歸法描述 229
10.2.3 疊代法描述 232
10.2.4 最終代碼 233
10.3 連續子列表的最大和 235
10.3.1 解題思路 235
10.3.2 最終代碼 237
10.4 幾何問題之凸包 238
10.4.1 問題求解 238
10.4.2 最終代碼 240
10.5 數學問題之多項式乘法 242
10.5.1 問題求解 242
10.5.2 最終代碼 245

熱門詞條

聯絡我們