-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

你也能看得懂的Python算法書

( 簡體 字)
作者:王碩 等類別:1. -> 程式設計 -> Python
譯者:
出版社:電子工業出版社你也能看得懂的Python算法書 3dWoo書號: 50208
詢問書籍請說出此書號!

缺書
NT售價: 295

出版日:11/1/2018
頁數:260
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121352553
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

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

本書有何特色
1. 以孩子的口吻,生動形象地講解算法,提高趣味性
為了便于讀者理解本書內容,提高學習效率,大部分問題都以孩子的口吻來講解算法,以解決小朗朗的實際問題作為出發點引出問題,增加了趣味性和可讀性。
2. 涵蓋核心算法知識點
本書涵蓋雙指針問題、哈希算法、深度優先遍歷、廣度優先遍歷、回溯算法、貪心算法、動態規劃算法、最短路徑問題、分治算法等9大算法。幫助讀者全面掌握核心算法的知識點。
3. 以Python語言作為載體,降低學習難度
拋棄其他復雜的編程語言,本書采用簡單的編程語言Python作為算法的載體,并在第1章介紹了Python語言的語法。
4. 選擇經典算法的經典問題,有較高的通用性
本書在簡單介紹Python編程語言以后,選擇了9大經典算法,重點講解算法原理,并選擇經典問題進行有針對性的練習。
5. 提供完善的技術支持和售后服務
本書提供了專門的郵箱供讀者咨詢:317977682@qq.com。讀者在閱讀本書的過程中有任何疑問都可以通過該郵箱獲得幫助。

本書內容及知識體系
第1章 編程基礎
掌握一門編程語言是學習算法的基礎。學習編程語言是為了與計算機“交流”,只有正確的格式才能被計算機成功識別。學習編程語言的起點就是了解這門語言的語法。本書使用Python語言進行算法講解,本章主要講解Python 3的編程語法。
第2章 雙指針問題
“指針”是編程語言中的一個對象,它存儲著一個內存空間的地址,計算機可以通過這個地址找到變量的值。也就是說,這個特定的地址指向這個特定的值。指針最大的優點在于它可以有效利用零碎的內存空間。
第3章 哈希算法
哈希算法又稱散列函數算法,是一種查找算法,簡單來說,就是把一些復雜的數據,通過某種函數映射關系,映射成更加易于查找的方式。但是這種映射關系有可能會發生多個關鍵字映射到同一地址的現象,我們稱之為沖突。在這種特殊情況下,需要對關鍵字進行第二次或更多次的處理,在其他的大多數情況下,哈希算法可以實現在常數時間內存儲和查找這些關鍵字。
第4章 深度優先遍歷
深度優先遍歷算法是經典的圖論算法,深度優先遍歷算法的搜索邏輯就和它的名字一樣,只要有可能,就盡量深入搜索,直到找到答案,或者嘗試了所有可能后確定沒有解。
第5章 廣度優先遍歷
廣度優先遍歷與深度優先遍歷類似,也是查詢的方法之一,它是從某個狀態出發查詢可以到達的所有狀態。但不同于深度優先遍歷,廣度優先遍歷總是先去查詢距離初始狀態最近的狀態。
第6章 回溯算法
回溯算法可以被看作走迷宮,因為我們不知道出口在哪里,所以只能不斷地深入,嘗試不同的路線。一旦找到了出口便可以回溯到起點,辨清路線。
第7章 貪心算法
貪心算法就是遵循某種既定原則,不斷地選取當前條件下最優的選擇來構造每一個子步驟的解決方案,直到獲得問題最終的解。即在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,它所做的僅是在某種意義上的局部最優解。
第8章 動態規劃算法
動態規劃算法將待求解問題拆分成一系列相互交疊的子問題,通過遞推關系定義各子問題的求解策略,并隨時記錄子問題的解,最終獲得原始問題的解,避免了對交疊子問題的重復求解。
第9章 最短路徑問題
把地點看成節點,道路看成邊,整個地圖就可以被看成一個加權圖。計算加權圖中兩點間的最短路徑是編程的一個重要問題,這一章我們會用以下幾個算法解決這個問題:迪可斯特朗算法、Floyd算法、A*算法。
第10章 分治算法
分治算法的核心思想是把一個規模很大的問題化簡為多個規模較小的問題,這些子問題雖然獨立而不同,但是問題的本質是一致的,從而達到分而治之的目的。

適合閱讀本書的讀者
? 需要全面學習算法的人員
? 需要學習Python的程序員
? 對編程算法感興趣的人員
? 希望提高算法水平的程序員
? 專業培訓機構的學員

閱讀本書的建議
? 沒有Python基礎的讀者,建議從第1章順次閱讀并演練每一個實例。
? 有一定Python基礎的讀者,可以根據實際情況有重點地選擇閱讀各個模塊和項目案例。
? 對于每一個模塊和案例,先自己思考一下實現的思路,然后再閱讀,學習效果會更好。這樣理解起來也會更加容易、更加深刻。
內容簡介:

編程的核心是算法,學習算法不僅能教會你解決問題的方法,而且還能為你今后的發展提供一種可能。本書面向算法初學者,首先介紹當下流程的編程語言Python,詳細講解了Python語言的變量和順序、分支、循環三大結構,以及列表和函數的使用,為之后學習算法打好基礎。然后以通俗生動的語言講解了雙指針、哈希、深度優先、廣度優先、回溯、貪心、動態規劃和最短路徑等經典算法。


目錄:

第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 八皇后問題 157
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 哈夫曼編碼 178
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
序: