歷時三年,寫的一本數據結構與算法pdf,開源了!

前言

大家好,我是bigsai,很早就在寫博客,將文章整理成了一個pdf,並且開源到github上!

自己寫東西斷斷續續也不少時間了,也寫了不少東西(雖然是偏向小白),這個其實花費的時間還是比較多的,這次的話主要將數據結構與算法中一些文章整理出來,初步整理成一版pdf,先分享給大家。

因爲在整理pdf方面沒啥經驗,目前還是md直接導出的pdf的,看了下有些部分代碼太長太佔頁面,有些部分圖片太長也很佔地方,有部分文章還嘗試不同風格顯得不那麼條理,有些地方頁面突然分割也很影響視覺體驗……

雖然有很多缺點和問題,這些地方後面也在想辦法考慮一點點優化,也歡迎大夥提出寶貴的意見!當然這個倉庫也是開源的,有興趣一起維護的可以維護。

更新會同步到Github倉庫中,也會告知大家。近期會將以前寫的其他數據結構算法部分(未優化)優化更新上去。

github地址https://github.com/javasmall/bigsai-algorithm

主要內容

  1. 理論基礎搭建

    • 緒論基礎知識:理解數據結構的相關概念,熟悉時間複雜度和空間複雜度。
    • 寫給小白硬核遞歸:通過解決經典問題,深入理解遞歸,掌握記憶化遞歸的妙用。
  2. 線性結構的掌握

    • 圖解線性表:手寫順序表和鏈表,理解帶頭結點和不帶頭結點鏈表的實現區別。
    • 圖解雙鏈表:手寫雙鏈表,考慮好節點直接聯繫,特別是考研重點。
  3. 棧與隊列的熟練使用

    • :掌握後進先出規則,實現上用順序表和鏈表考慮區別。
    • 隊列:理解先進先出規則,實現上使用循環數組和鏈表分別實現。
  4. 更高級的線性結構

    • 跳錶:瞭解跳錶的增刪改查原理和流程,拓寬對鏈表的認識。

      image-20231112122201531

    • 約瑟夫環問題:通過鏈表法、List模擬、公式法逐步深入這個問題。

  5. 樹的深入學習

    • 二叉樹層序遍歷:學會使用隊列進行層序遍歷,解決二叉樹之字形遍歷。
    • 二叉樹前中後遍歷:熟練掌握非遞歸方式遍歷,建立對樹結構的全面理解。
    • 二叉搜索(查找)樹:學會查找方式和刪除節點邏輯。
    • 二叉平衡(AVL)樹:瞭解平衡二叉樹的旋轉方式,以及不同平衡方式的應用。
  6. 其他重要數據結構

    • 哈夫曼樹:理解哈夫曼樹的weight計算方式和哈夫曼編碼。
    • 字典(Trie)樹:手寫字典樹,熟悉其應用場景和優勢。
    • 優先隊列:瞭解藉助堆的運行原理。
    • 並查集(不相交集合):手寫並查集,理解路徑壓縮的優勢。
  7. 問題解決方法的學習

    • 回溯算法:通過解經典問題如八皇后問題,深刻理解回溯思想。
    • 分治算法:學會先分後合併,解決經典問題如二分搜索、快排、歸併排序、最近點對等。
    • 搜索算法:深度優先搜索、廣度優先搜索,解決問題如藍橋杯,提高解決實際問題的能力。
    • 拓撲排序:理解圖論算法,得到一個前後的順序序列。
    • Dijkstra算法:瞭解圖論單源最短路徑,隊列+貪心實現。
    • Floyd算法:瞭解圖論多源最短路徑,代碼簡短但需要深刻理解。
    • 最小生成樹算法:Prim和Kruskal,瞭解不同貪心策略的應用。
  8. 位運算與數論算法

    • 位運算:介紹幾種位運算,解決大部分經典位運算問題。
    • 求素數:掌握素數篩和歐拉篩的應用。
    • 快速冪:數論算法,掌握非遞歸、遞歸寫法,瞭解矩陣快速冪。
  9. 大數運算

    • 大數加減乘除:手寫大數運算,瞭解大數除法的思想。

      image-20231112121702785

  10. 十大排序算法

    • 冒泡排序、快速排序:瞭解交換類排序的原理和應用。
    • 插入排序、希爾排序:理解插入類排序的方法和優勢。
    • 歸併排序:學會歸併類排序的實現。
    • 簡單選擇排序、堆排序:掌握選擇類排序的原理。
    • 桶排序、計數排序、基數排序:瞭解桶類排序的應用場景和實現。
    • 雙軸快排:優化快排的方法,深入理解排序算法的差異。

推薦資料

  1. 書籍
    • 《算法導論》:經典之作,系統全面地介紹了算法和數據結構。
    • 《數據結構與算法分析》:作者Mark Allen Weiss,深入淺出地講解數據結構與算法。
    • 《劍指Offer》:針對面試算法題的詳盡解析,適合入門和麪試準備。
  2. 在線教程
    • LeetCode:刷題神器

github地址https://github.com/javasmall/bigsai-algorithm

持續更新中,歡迎star支持 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章