秋季新到貨促案
輕松學算法:互聯網算法面試寶典

輕松學算法:互聯網算法面試寶典

  • 定價:414
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書共分為12個章節,首先介紹了一些基礎的數據結構,以及常用的排序算法和查找算法;其次介紹了兩個稍微復雜一些的數據結構——樹和圖,還介紹了每種數據結構和算法的適用場景,之后是一些在工作與面試中的實際應用,以字符串、數組、查找等為例介紹了一些常見的互聯網面試題及分析思路,便於讀者了解這些思路,順利地通過互聯網公司的面試;最后介紹了一些常見的算法思想,便於讀者對今后遇到的算法問題更輕易地想出解決方案。本書的講解輕松有趣,易於讀者把煩瑣、枯燥的算法學習變為有趣、愉快的學習,把被動學習變為主動學習。

本書也介紹了一些會在工作面試中用到的算法。對於一些正在學習算法的人來說,本書絕對是可以幫你輕松掌握算法的輔助資料;對於已經了解算法的人來說,可以從本書中了解到這些算法是如何在實際工作中使用的。本書適合即將畢業的學生、初入職場的工程師及想補充基礎算法知識的人學習,也適合作為一本互聯網公司面試的參考書,更是一本不可多得的便於讀者時常補習算法知識的收藏寶典。

趙燁,Java高級研發工程師。現就職於優酷土豆的來瘋直播團隊。主要關注高並發、高可用、系統性能優化等內容。樂於學習、樂於分享。博客地址irfen.me。
 

目錄

第1章 數組、集合和散列表 1
1.1 要用就要提前想好的數據結構—數組 2
1.1.1 什麼是數組 2
1.1.2 數組的存儲結構 3
1.1.3 數組的特點 6
1.1.4 數組的適用場景 7
1.2 升級版數組—集合 8
1.2.1 什麼是集合 8
1.2.2 集合的實現 8
1.2.3 集合的特點 13
1.2.4 集合的適用場景 13
1.2.5 數組與變長數組的性能 14
1.3 數組的其他應用—散列表 14
1.3.1 什麼是散列表 15
1.3.2 對散列表函數產生沖突的解決辦法 16
1.3.3 散列表的存儲結構 17
1.3.4 散列表的特點 18
1.3.5 散列表的適用場景 20
1.3.6 散列表的性能分析 21
1.4 小結 28

第2章 棧、隊列、鏈表 29
2.1 漢諾塔游戲—棧 30
2.1.1 什麼是漢諾塔 30
2.1.2 什麼是棧 31
2.1.3 棧的存儲結構 31
2.1.4 棧的特點 36
2.1.5 棧的適用場景 36
2.2 火爆的奶茶店—隊列 37
2.2.1 什麼是隊列 37
2.2.2 隊列的存儲結構 38
2.2.3 隊列的特點 43
2.2.4 隊列的適用場景 44
2.3 用棧實現隊列 45
2.3.1 用兩個棧實現隊列 46
2.3.2 兩個隊列實現棧 50
2.4 鏈表 53
2.4.1 什麼是鏈表 54
2.4.2 鏈表的存儲結構 54
2.4.3 鏈表的操作 55
2.4.4 鏈表的特點 66
2.4.5 鏈表的適用場景 66
2.4.6 鏈表的性能分析 67
2.4.7 面試舉例:如何反轉鏈表 68
2.5 鏈表其實也可以用數組模擬 69
2.5.1 靜態鏈表 70
2.5.2 靜態鏈表的實現 70
2.5.3 靜態鏈表的特點 80
2.6 再談漢諾塔 81
2.6.1 漢諾塔的移動原理 81
2.6.2 漢諾塔的遞歸實現 82

第3章 排序算法 84
3.1 算法基礎 85
3.1.1 時間復雜度 85
3.1.2 空間復雜度 88
3.1.3 穩定性 88
3.2 快而簡單的排序—桶排序 89
3.2.1 舉個例子 89
3.2.2 什麼是桶排序 90
3.2.3 桶排序的實現 90
3.2.4 桶排序的性能及特點 92
3.2.5 桶排序的適用場景 93
3.3 咕嘟咕嘟的冒泡排序 94
3.3.1 什麼是冒泡排序 94
3.3.2 冒泡排序的原理 94
3.3.3 冒泡排序的實現 96
3.3.4 冒泡排序的特點及性能 99
3.3.5 冒泡排序的適用場景 99
3.3.6 冒泡排序的改進方案 100
3.4 最常用的快速排序 100
3.4.1 什麼是快速排序 101
3.4.2 快速排序的原理 101
3.4.3 快速排序的實現 105
3.4.4 快速排序的特點及性能 107
3.4.5 快速排序的適用場景 108
3.4.6 快速排序的優化 108
3.5 簡單的插入排序 109
3.5.1 什麼是插入排序 110
3.5.2 插入排序的原理 110
3.5.3 插入排序的實現 112
3.5.4 插入排序的特點及性能 114
3.5.5 插入排序的適用場景 115
3.6 直接插入的改進—希爾排序 115
3.6.1 什麼是希爾排序 116
3.6.2 希爾排序的原理 116
3.6.3 希爾排序的實現 118
3.6.4 希爾排序的特點及性能 120
3.6.5 希爾排序的適用場景 121
3.7 簡單選擇排序 121
3.7.1 什麼是選擇排序 122
3.7.2 簡單選擇排序的原理 122
3.7.3 簡單選擇排序的實現 123
3.7.4 選擇排序的特點及性能 125
3.7.5 簡單選擇排序的優化 125
3.7.6 選擇排序的適用場景 126
3.8 小結 126

第4章 搜索,沒那麼難 128
4.1 最先想到的—順序查找 129
4.1.1 最先想到的 129
4.1.2 順序查找的原理與實現 129
4.1.3 順序查找的特點及性能分析 131
4.1.4 順序查找的適用場景 132
4.2 能不能少查點—二分查找 133
4.2.1 某些特殊情況的查找需求 133
4.2.2 二分查找的原理及實現 133
4.2.3 二分查找的優化 137
4.2.4 二分查找的特點及性能分析 138
4.2.5 二分查找的適用場景 139
4.2.6 我是來還債的—之前欠的二分插入排序 139
4.3 行列遞增的矩陣查找—二分查找思維拓展 141
4.3.1 一道題 142
4.3.2 幾個解法 142
4.3.3 其他拓展 153
4.4 分塊查找 154
4.4.1 每次插入元素都要有序嗎 154
4.4.2 什麼是分塊查找 155
4.4.3 分塊查找的原理及實現 155
4.4.4 分塊查找的特點與性能分析 159
4.4.5 分塊查找的適用場景 160
4.5 查找算法小結 161
4.6 搜索引擎與倒排索引 162
4.6.1 什麼是搜索引擎 162
4.6.2 倒排索引 162
4.6.3 索引實例 163
4.6.4 倒排索引的關鍵字提取 164
4.6.5 商業索引的其他拓展 164

第5章 樹 166
5.1 樹的定義及存儲結構 167
5.1.1 什麼是樹 167
5.1.2 其他相關術語 168
5.1.3 都有哪些樹 170
5.1.4 樹的存儲結構及實現 170
5.2 二叉樹 173
5.2.1 什麼是二叉樹 173
5.2.2 還有兩種特殊的二叉樹 173
5.2.3 二叉樹的實現 175
5.2.4 二叉樹的遍歷 185
5.2.5 完全二叉樹 187
5.3 二叉樹的查找算法 188
5.3.1 二叉查找樹 188
5.3.2 平衡二叉樹 198
5.4 B-樹、B+樹 202
5.4.1 什麼是B-樹 203
5.4.2 什麼是B+樹 204
5.4.3 B-樹、B+樹的特點及性能分析 205
5.5 在MySQL數據庫中是如何應用B+樹的 206
5.6 哈夫曼樹 209
5.6.1 幾個術語 209
5.6.2 什麼是哈夫曼樹 209
5.6.3 哈夫曼樹的構造 211
5.6.4 哈夫曼編碼及解碼 213
5.7 堆 215
5.7.1 什麼是堆 215
5.7.2 堆的基本操作 216
5.7.3 堆的性能分析 221
5.7.4 堆排序 222
5.8 紅黑樹 224
5.8.1 什麼是紅黑樹 224
5.8.2 紅黑樹的特點與優勢 224

第6章 圖 226
6.1 圖的定義及相關術語 227
6.1.1 什麼是圖 227
6.1.2 圖的分類 227
6.1.3 圖的相關術語 228
6.2 圖的表示與存儲方式 229
6.2.1 鄰接矩陣 229
6.2.2 鄰接表 234
6.3 更多的圖 237
6.3.1 連通圖 238
6.3.2 強連通圖 238
6.4 深度優先遍歷與廣度優先遍歷 238
6.4.1 深度優先遍歷 239
6.4.2 廣度優先遍歷 248
6.4.3 兩種遍歷方法的對比 253
6.5 最短路徑 254
6.5.1 帶權圖 254
6.5.2 Dijkstra算法 255
6.5.3 Floyd算法 269

第7章 字符串 272
7.1 字符及字符串簡介 273
7.1.1 什麼是字符 273
7.1.2 什麼是字符串 273
7.2 字符的全排列 275
7.2.1 問題描述及分析 275
7.2.2 最先想到的 275
7.2.3 利用字典序排列 278
7.3 反轉字符串 283
7.3.1 問題描述及分析 283
7.3.2 最先想到的 283
7.3.3 對換反轉法 285
7.3.4 拓展—旋轉字符串 287
7.4 判斷回文 288
7.4.1 問題描述及分析 288
7.4.2 對半判斷 289
7.5 尋找最大的回文子串 290
7.5.1 問題描述及分析 290
7.5.2 遍歷實現 291
7.6 將字符串轉換為數字 293
7.6.1 問題描述及分析 293
7.6.2 解決 293
7.7 判斷字符串包含的問題 297
7.7.1 問題描述及分析 297
7.7.2 非常簡單的解決思路 297
7.7.3 利用排序進行優化 299
7.7.4 投機取巧的素數方案 302
7.7.5 用散列表進行實現 304
7.7.6 用位運算進行實現 305

第8章 數組還有好多玩法 308
8.1 從數組中找出其和為指定值的兩個數 309
8.1.1 問題描述及分析 309
8.1.2 最簡單的辦法 309
8.1.3 一切為了速度 310
8.1.4 排序總是好的選擇 311
8.1.5 還能更好 313
8.2 找出連加值最大的子數組 315
8.2.1 問題描述及分析 315
8.2.2 暴力窮舉法 316
8.2.3 動態規划法 319
8.2.4 問題拓展 321
8.3 數組正負值排序 323
8.3.1 問題描述及分析 323
8.3.2 最直觀的解法 324
8.3.3 借鑒簡單插入排序 325
8.3.4 借鑒快速排序 327
8.3.5 拓展 329
8.4 將數組隨機打亂順序 329
8.4.1 問題描述及
 

詳細資料

  • ISBN:9787121291944
  • 規格:394頁 / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【自然科普、電腦資訊】大雁文化電子書暢銷展|兩本85折、三本79折、套書77折|閱讀是一趟「發現之旅」
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 中醫藥
  • https://activity.books.com.tw/crosscat/show/A00000
  • 文學季