總金額: 會員:NT$ 0 非會員:NT$ 0 
(此金額尚未加上運費)
電子電信技術 電腦技術 計算技術、計算機技術
 
 
 
 
漫畫算法:小灰的算法之旅•Python篇
 作  者: 魏夢舒
 出版單位: 電子工業
 出版日期: 2020.05
 進貨日期: 2020/5/13
 ISBN: 9787121382789
 開  本: 16 開    
 定  價: 593
 售  價: 474
  會 員 價: 435
推到Facebook 推到Plurk 推到Twitter
前往新書區 書籍介紹 購物流程  
 
編輯推薦:

• 小灰的算法故事給算法這顆“炮彈”包上了“糖衣”,讓算法的威力潛藏於內,外表不再嚇人,萌萌噠Q彈可愛。
• 從基本數據結構,到各類常用算法,再到面試算法,再到職場應用,書中的主角小灰和大黃帶領大家逐個破解。
• 和一群快樂的小倉鼠共同領悟算法思想、理解算法對內存空間和性能的影響,並開動腦筋去尋求解決問題的高效方案。


內容簡介:

本書通過虛擬的主人公小灰的心路歷程,用漫畫的形式講述了算法和數據結構的基礎知識、複雜多變的算法面試題目及算法的實際應用場景。

第1章 介紹了算法和數據結構的相關概念,告訴大家算法是什麼,數據結構又是什麼,它們有哪些用途,如何分析時間複雜度,如何分析空間複雜度。

第2章 介紹了最基本的數據結構,包括數組、鏈表、棧、隊列、哈希表的概念和讀寫操作。

第3章 介紹了樹和二叉樹的概念、二叉樹的各種遍歷方式、二叉樹的特殊形式——二叉堆和優先隊列的應用。

第4章 介紹了幾種典型的排序算法,包括冒泡排序、快速排序、堆排序、計數排序、桶排序。

第5章 介紹了10余道職場上流行的算法面試題及詳細的解題思路。例如怎樣判斷鏈表有環,怎樣計算大整數相加等。

第6章 介紹了算法在職場上的一些應用,例如使用LRU算法來淘汰冷數據,使用Bitmap算法來統計用戶特徵等。


作者簡介:

微信公眾號程序員小灰的作者,多年的軟件行業從業經驗,先後在京東金融和摩拜科技從事算法和研發相關工作,對算法有著深入的研究。


圖書目錄:

第1章 算法概述 / 1
1.1 算法和數據結構  / 1
1.1.1 小灰和大黃 / 1
1.1.2 什麼是算法 / 3
1.1.3 什麼是數據結構 / 7
1.2 時間複雜度 / 8
1.2.1 算法的好與壞 / 8
1.2.2 基本操作執行次數 / 10
1.2.3 漸進時間複雜度 / 12
1.2.4 時間複雜度的巨大差異 / 15
1.3 空間複雜度 / 16
1.3.1 什麼是空間複雜度 / 16
1.3.2 空間複雜度的計算 / 19
1.3.3 時間與空間的取捨 / 21
1.4 小結  / 22

第2章 數據結構基礎  / 23
2.1 什麼是數組 / 23
2.1.1 初識數組 / 23
2.1.2 數組的基本操作  / 26
2.1.3 數組的優勢和劣勢 / 32
2.2 什麼是鏈表 / 32
2.2.1 “正規軍”和“地下黨” / 32
2.2.2 鏈表的基本操作  / 35
2.2.3 數組VS鏈表 / 40
2.3 棧和隊列 / 41
2.3.1 物理結構和邏輯結構 / 41
2.3.2 什麼是棧 / 42
2.3.3 棧的基本操作  / 43
2.3.4 什麼是隊列 / 44
2.3.5 隊列的基本操作 / 45
2.3.6 棧和隊列的應用 / 48
2.4 神奇的哈希表  / 50
2.4.1 為什麼需要哈希表 / 50
2.4.2 哈希函數 / 52
2.4.3 哈希表的讀寫操作 / 53
2.5 小結 / 56

第3章 樹 / 58
3.1 樹和二叉樹 / 58
3.1.1 什麼是樹 / 58
3.1.2 什麼是二叉樹 / 61
3.1.3 二叉樹的應用 / 64
3.2 二叉樹的遍歷 / 68
3.2.1 為什麼要研究遍歷 / 68
3.2.2 深度優先遍歷  / 70
3.2.3 廣度優先遍歷 / 80
3.3 什麼是二叉堆 / 83
3.3.1 初識二叉堆 / 83
3.3.2 二叉堆的自我調整 / 86
3.3.3 二叉堆的代碼實現  / 91
3.4 什麼是優先隊列 / 93
3.4.1 優先隊列的特點 / 93
3.4.2 優先隊列的實現  / 95
3.5 小結  / 98

第4章 排序算法 / 100
4.1 引言 / 100
4.2 什麼是冒泡排序 / 102
4.2.1 初識冒泡排序 / 102
4.2.2 冒泡排序的優化 / 105
4.2.3 雞尾酒排序 / 108
4.3 什麼是快速排序  / 112
4.3.1 初識快速排序 / 112
4.3.2 基準元素的選擇 / 114
4.3.3 元素的交換 / 116
4.3.4 單邊循環法 / 118
4.3.5 非遞歸實現 / 121
4.4 什麼是堆排序  / 123
4.4.1 傳說中的堆排序 / 123
4.4.2 堆排序的代碼實現 / 127
4.5 計數排序和桶排序 / 129
4.5.1 線性時間的排序 / 129
4.5.2 初識計數排序 / 130
4.5.3 計數排序的優化 / 132
4.5.4 什麼是桶排序 / 137
4.6 小結 / 140

第5章 面試中的算法 / 141
5.1 躊躇滿志的小灰 / 141
5.2 如何判斷鏈表有環 / 142
5.2.1 一場與鏈表相關的面試 / 142
5.2.2 解題思路 / 146
5.2.3 問題擴展  / 148
5.3 最小棧的實現 / 151
5.3.1 一場關於棧的面試 / 151
5.3.2 解題思路 / 153
5.4 如何求出最大公約數  / 156
5.4.1 一場求最大公約數的面試 / 156
5.4.2 解題思路 / 158
5.5 如何判斷一個數是否為2的整數次冪  / 162
5.5.1 一場很“2”的面試 / 162
5.5.2 解題思路 / 165
5.6 無序數組排序後的最大相鄰差  / 167
5.6.1 一道奇葩的面試題 / 167
5.6.2 解題思路  / 168
5.7 如何用棧實現隊列 / 173
5.7.1 又是一道關於棧的面試題 / 173
5.7.2 解題思路 / 174
5.8 尋找全排列的下一個數 / 179
5.8.1 一道關於數字的題目 / 179
5.8.2 解題思路 / 181
5.9 刪去k個數字後的最小值 / 184
5.9.1 又是一道關於數字的題目 / 184
5.9.2 解題思路 / 186
5.10 如何找到兩個數組的中位數 / 192
5.10.1 有關中位數的問題 / 192
5.10.2 解題思路 / 194
5.11 如何求解金礦問題 / 200
5.11.1 一個關於財富自由的問題 / 200
5.11.2 解題思路 / 202
5.12 尋找缺失的整數 / 211
5.12.1 “五行”缺一個整數 / 211
5.12.2 問題擴展 / 213

第6章 算法的實際應用 / 218
6.1 小灰上班的第1天 / 218
6.2 Bitmap的巧用 / 220
6.2.1 一個關於用戶標籤的需求 / 220
6.2.2 用算法解決問題 / 222
6.3 LRU算法的應用 / 228
6.3.1 一個關於用戶信息的需求 / 228
6.3.2 用算法解決問題 / 231
6.4 什麼是A星尋路算法  / 236
6.4.1 一個關於迷宮尋路的需求 / 236
6.4.2 用算法解決問題 / 238
6.5 如何實現紅包算法 / 248
6.5.1 一個關於錢的需求 / 248
6.5.2 用算法解決問題 / 251
6.6 算法之路無止境  / 254


章節試讀:

推薦序
初識小灰是因為在他的微信公眾號看到一篇講動態規划算法的文章,當時覺得挺意外,沒想到還能有人用漫畫來解釋動態規划算法。
所謂算法,其實是一個很寬泛的概念。有理解起來難度超大,燒腦到要“爆炸”的算法;也有簡單直接,一目了然的算法;更多的卻是,雖然看起來複雜,但只要方法得當,搞清原理,掌握起來還是很容易的那種算法。
可是很多人被“算法”二字“猙獰”的外表嚇住了, 久久不敢接觸它。好不容易斗膽翻翻算法書,結果看到的不是大篇大篇的代碼,就是亂七八糟的符號。這都是什麼呀?算了,看來是學不會算法了,放棄吧……
但凡書籍文章,最難讀的,肯定是公式、符號;而最好讀的,無外乎圖像、對話等。本書作者以可愛的小灰和大黃兩個漫畫形象為主人公,把對算法的描述過程嵌入它們的對話之中,並輔之以圖形等直觀方式來表達數據結構和操作步驟——這種表達形式帶著天然的親和力,完全沒有計算機背景的讀者讀起來也不覺得生硬。
小灰所做的事情,就是給算法這顆“炮彈”包上了“糖衣”,讓算法的威力潛藏於內,外表不再嚇人,反而變得萌萌噠,Q彈可愛,清新怡人。
先乾為敬,讓我們一起吞了這顆包著“炸藥”的“糖丸”吧!
李燁,微軟高級軟件工程師

前言
許多程序員對算法望而生畏,認為算法是一門高深莫測的學問。
以前我曾經面試過一個求職者,起初考查他的技術功底和項目經驗,他都回答得不錯。接下來我對他說:“OK,那我考查一下你的算法水平吧。”
題目還沒說出口,該求職者立馬擺擺手說:“不要,不要,我算法不行的!”
我還是有些不甘心,接著說道:“我只考查最基礎的,你說說冒泡排序的基本思路吧!”
他仍舊說:“我不知道,關於算法我一點兒都不會……”
算法真的那麼難,真的那麼無趣嗎?
恰恰相反,算法是編程領域中最有意思的一塊內容,也不像許多人想象的那樣難以駕馭。
許多人把算法比作程序員的“內功”,但筆者覺得這個比喻並不是很恰當。內功實實在在,沒有任何技巧可言,而算法天馬行空,千變萬化,就像金庸筆下令狐衝的一套獨孤九劍。
學習算法,不需要死記硬背那些冗長複雜的背景知識、底層原理、指令語法……需要做的是領悟算法思想、理解算法對內存空間和性能的影響,以及開動腦筋去尋求解決問題的最佳方案。相比編程領域的其他技術,算法更純粹,更接近數學,也更具有趣味性。
我一直希望寫一些東西,讓更多的IT同行能夠領略到算法的魅力,可是用什麼方式來寫呢?
2016年9月,一個突如其來的靈感讓我創造了一個初出茅廬的菜鳥程序員形象,這個菜鳥程序員名叫小灰。
程序員小灰的故事活躍在同名的微信公眾號上,該公眾號用漫畫的形式訴說著小灰一次又一次的面試經歷,倔強的小灰屢戰屢敗,屢敗屢戰。小灰是我剛剛入行時的真實寫照,相信許多程序員也能從中看到自己的影子。
終於,在朋友們的支持和鼓勵下,程序員小灰的故事從微信公眾號搬到了紙質圖書上。能讓更多同行看到小灰的故事,我感到十分欣慰。

本書特色
這本書通過漫畫的形式,講述了小灰學習算法和數據結構知識的心路歷程。書中許多內容源於本人的微信公眾號,但是比公眾號上所展現的內容更加系統、全面,也更加嚴謹。
本書的前4章是對算法基礎知識的講解,沒有算法和數據結構基礎的讀者可以從頭開始進行系統學習。
對於有一定基礎的讀者,可以選擇從第5章面試題目的講解開始閱讀,每一道面試題目都是相對獨立的,並不需要嚴格地按順序學習。同時,也推薦大家適當看看前面的內容,鞏固一下自己的算法知識體系。
這不是一本編程入門書。在編程方面完全零基礎的讀者,建議先了解一些Python語言的基礎。不過,算法思想是相通的,如果你掌握的是其他編程語言,也不難看懂其中
的算法和數據結構知識。

勘誤和支持
除書中所提供的代碼示例以外,大家也可以關注微信公眾號“程序員小灰”,在後台回覆“漫畫算法”,獲得全書完整的、可運行的代碼。為了保證代碼的簡捷,在部分代碼實現中省略了煩瑣的參數判空和驗證邏輯。
由於作者水平有限,書中難免會出現一些錯誤,懇請廣大讀者批評指正。讀者如果在閱讀過程中產生疑問或發現Bug,歡迎隨時到微信公眾號“程序員小灰”的後台留言。


圖片預覽:

 
  步驟一.
依據網路上的圖書,挑選你所需要的書籍,根據以下步驟進行訂購
選擇產品及數量 結 帳 輸入基本資料 取貨與付款方式
┌───────────────────────────────────────────────────┘
資料確定 確認結帳 訂單編號    

步驟二.
完成付款的程序後,若採用貨到付款等宅配方式,3~7天內 ( 例假日將延期一至兩天 ) 您即可收到圖書。若至分店門市取貨,一週內聯絡取書。

步驟三.
完成購書程序者,可利用 訂單查詢 得知訂單進度。

注意事項.
● 付款方式若為網路刷卡必須等" 2 ~ 3 個工作天"確認款項已收到,才會出貨.如有更改書籍數量請記得按更新購物車,謝謝。

● 大陸出版品封面老舊、磨痕、凹痕等均屬常態,除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。

● 至2018年起,因中國大陸環保政策,部分書籍配件以QR CODE取代光盤音頻mp3或dvd,已無提供實體光盤。如需使用學習配件,請掃描QR CODE 連結至當地網站註冊並通過驗證程序,方可下載使用。造成不便,敬請見諒。

● 我們將保留所有商品出貨權利,如遇缺書情形,訂單未達免運門檻運費需自行負擔。

預訂海外庫存.
商品到貨時間須4週,訂單書籍備齊後方能出貨,如果您有急用書籍,建議與【預訂海外庫存】商品分開訂購。