資料結構與演算法之美-王爭-極客時間

王平發表於2019-03-20

由極客時間出品的《資料結構與演算法之美》由前Google工程師王爭所做,在Google從事翻譯系統開發,專研演算法數十年,這是為工程師量身打造的資料結構與演算法私教課。

資料結構與演算法之美

資料結構與演算法之美專欄介紹

踏上了程式設計之路,也就意味著你選擇了一種終身學習的生活方式。每一個程式設計師都要練就十八般武藝,而掌握資料結構與演算法就像修煉了九陽神功。換句話說,掌握了資料結構與演算法,你的內功修煉速度就會有質的飛躍。

無論你是從事業務開發,想要評估程式碼效能和資源消耗;還是從事架構設計,想要優化設計模式;或者想要快速玩轉熱門技術,比如人工智慧、區塊鏈,都要先搞定資料結構與演算法。因為,任憑新技術如何變化,只要掌握了這些電腦科學的核心“招式”,你就可以見招拆招,始終立於“不敗之地”。

那怎樣才能真正掌握資料結構與演算法呢?是把常用的資料結構與演算法背得滾瓜爛熟嗎?即便如此,面對現實世界的千變萬化,你也不太可能照搬某個演算法解決即將遇到的下一個問題。因此,就像學習設計模式、架構模式一樣,學習資料結構與演算法的關鍵,在於掌握其中的思想和精髓,學會解決實際問題的方法。

 

資料結構與演算法之美作者介紹

王爭,前Google工程師,從事Google翻譯相關係統的開發,深入研究演算法十餘年。現任某金融公司核心系統資深系統架構師,負責公司核心業務的架構設計和開發。

資料結構與演算法之美作者王爭

他將採用最適合工程師的學習方式,不拘泥於某一特定程式語言,從實際開發場景出發,由淺入深教你學習資料結構與演算法的方法,幫你搞懂基本概念和核心理論,深入理解演算法精髓,幫你提升使用資料結構和演算法思維解決問題的能力。

特別提醒:專欄內容相關程式碼,均隨更新進度上傳至GitHub,點選這裡,即可檢視。

 

資料結構與演算法之美專欄模組

專欄共56期,分為4個由淺入深的模組。

入門篇

為什麼要學習資料結構與演算法?資料結構與演算法該怎麼學?學習的重點又是什麼?這一模組將為你指明資料結構與演算法的學習路徑;並著重介紹貫穿整個專欄學習的重要概念:時間複雜度和空間複雜度,為後面的學習打好基礎。

基礎篇

將介紹最常見、最重要的資料結構與演算法。每種都從“來歷”“特點”“適合解決的問題”“實際的應用場景”出發,進行詳細介紹;並配有清晰易懂的手繪圖解,由淺入深進行講述;還適時總結一些實用“寶典”,教你解決真實開發問題的思路和方法。

高階篇

將從概念和應用的角度,深入剖析一些稍複雜的資料結構與演算法,推演海量資料下的演算法問題解決過程;幫你更加深入理解演算法精髓,開拓視野,訓練邏輯;真正帶你升級演算法思維,修煉深厚的程式設計內功。

實戰篇

將通過實戰案例串講前面講到的資料結構和演算法;並拿一些開源專案和框架,剖析它們背後的資料結構和演算法;並帶你用學過的內容實現一個短網址系統;深化對概念和應用的理解,靈活使用資料結構和演算法。

 

資料結構與演算法之美專欄詳細目錄

1)作為一名軟體工程師,為什麼要學習資料結構和演算法?

2)如何抓住重點,系統高效地學習資料結構和演算法?

3)複雜度分析(上):如何分析演算法的執行效率和資源消耗?

4)複雜度分析(下):淺析最好、最壞、平均、均攤時間複雜度

5)陣列:為什麼很多程式語言中陣列都從0開始編號?

6)連結串列(上):如何實現LRU快取淘汰演算法?

7)連結串列(下):如何輕鬆寫出正確的連結串列程式碼?

8)棧:如何實現瀏覽器的前進和後退功能?

9)佇列:如何實現執行緒池等有限資源池的請求排隊功能?

10)遞迴:如何用三行程式碼找到“最終推薦人”?

11)排序(上):為什麼插入排序比氣泡排序更受歡迎?

12)排序(下):如何用怏排思想在〇(n)內查詢第K大元素?

13)線性排序:如何根據年齡給100萬使用者資料排序?

14)排序優化:如何實現一個通用的、高效能的排序函式?

15)二分查詢(上):如何用最省記憶體的方式實現怏速查詢功能?

16)二分查詢(下):如何怏速定位IP對應的省份地址?

17)眺表:為什麼Redis—定要用跳錶實現有序集合?

18)雜湊表(上):Word文件的單詞拼寫檢查功能是如何實現的?

19)雜湊表(中):如何打造一個工業級水平的雜湊表?

20)雜湊表(下):為什麼經常把雜湊表和連結串列放在一起使用?

21)雜湊演算法(上):如何防止資料庠中的使用者資訊被脫庫?

22)雜湊演算法(下):雜湊演算法在分散式系統中有哪些應用?

23)二叉樹基礎(上):什麼樣的二又樹適合用陣列來儲存?

24)二叉樹基礎(下):有了高效的雜湊表,為什麼還用二叉樹?

25)紅黑樹(上):為什麼工程中都喜歡用紅黑樹這種平衡二叉樹?

26)函紅黒樹(下):掌握這些技巧,你也可以輕鬆實現一個紅黒樹

27)遞迴樹:如何藉助樹來輕鬆分析遞迴演算法的時間複雜度?

28)堆和堆排序:為什麼說堆排序沒有怏速排序怏?

29)堆的應用:如何尋找TOP 10熱門搜尋關鍵詞?

30)圖的表示:如何儲存微博、微信等社交網路中的好友關係?

31)深度和廣度優先搜尋:如何找出社交網路中的三度好友關係?

32)字串匹配(上):如何藉助雜湊演算法實現高效字串匹配?

33)字串匹配(中):如何實現文字編輯器中的查詢功能?

34)字串匹配(下):如何藉助BM演算法理解KMP演算法?

35)Trie樹:如何實現搜尋引擎的搜尋關鍵詞提示功能?

36)AC自動機:如何用多模式串匹配實現敏感詞過濾功能?

37)貪心演算法:如何用貪心演算法實現Huffman壓縮編碼?

38)分治演算法:談一談大規模計算框架MapReduce中的分治思想

39)回溯演算法:從電影《蝴蝶效應》中學習回溯演算法的核心思想

40)初識動態規劃:如何巧妙解決“雙十購物時的湊單問題?

41)動態規劃理論:一篇文章帯你搞憧最優子結構、無後效性和重複子問題

42)動態規劃實戰:如何實現搜尋引擎中的拼寫糾錯功能?

43)拓撲排序:如何確定程式碼原始檔的編譯依賴關係?

44)最短路徑:地圖軟體是如何計算出最優出行路徑的?

45)點陣圖:如何實現網頁爬蟲中的URL去重功能?

46)統計問題:如何利用樸素貝葉斯演算法過濾垃圾簡訊?

47)向量空間:如何實現一個簡單的音樂推薦系統?

48)B+樹:MySQL資料庫索引是如何實現的?

49)搜尋:如何用A*搜尋演算法實現遊戲中的尋路功能?

50)索引:如何在海量資料中快速查詢某個資料?

51)並行演算法:如何利用並行處理提高演算法的執行效率?

52)演算法實戰(一):剖析Redis常用的資料型別對應的資料結構

53)演算法實戰(二):剖析搜尋引擎背後的經典資料結構和演算法

54)演算法實戰(三):剖析高效能佇列Dismptor背後的資料結構和演算法

55)演算法實戰(四):剖析微服務介面鑑許可權流背後的資料結構和演算法

56)演算法實戰(五):如何用學過的資料結構和演算法實現一個短網址系統?

 

訂閱須知:

本專欄適合有資料結構基礎的IT從業者和大學生

專欄出品方:極客時間。訂閱後可在極客時間APP、極客時間小程式學習。

學習形式為圖文 + 音訊,共計 56 期,定價99元。

掃我提供的二維碼報名我們還再各得12元。報名後記得加我微信:dismissmwp 備註:返現。我好給你返12元錢哈哈。也可以直接複製下面連結報名:http://gk.link/a/102Dh

資料結構與演算法之美專欄價格

極客時間更多專欄:

iOS開發高手課程-戴銘

Java併發程式設計實戰-王寶令

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章