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

魏夢舒

  • 出版商: 電子工業
  • 出版日期: 2020-03-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 268
  • 裝訂: 平裝
  • ISBN: 7121382784
  • ISBN-13: 9787121382789
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

相關主題

商品描述

《漫畫算法》通過虛擬的主人公小灰的心路歷程,
用漫畫的形式講述了算法和數據結構的基礎知識、
複雜多變的算法面試題目及算法的實際應用場景。
第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