漫畫演算法:小灰的演算法之旅(Python篇)

漫畫演算法:小灰的演算法之旅(Python篇)
定價:474
NT $ 474
  • 作者:魏夢舒
  • 出版社:電子工業出版社
  • 出版日期:2020-05-01
  • 語言:簡體中文
  • ISBN10:7121382784
  • ISBN13:9787121382789
  • 裝訂:平裝 / 268頁 / 16k / 19 x 26 x 1.34 cm / 普通級 / 單色印刷 / 初版
 

內容簡介

《漫畫演算法》通過虛擬的主人公小灰的心路歷程,用漫畫的形式講述了演算法和資料結構的基礎知識、複雜多變的演算法面試題目及演算法的實際應用場景。
 
第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
網路書店 類別 折扣 價格
  1. 新書
    $474