用js來實現那些數據結構及算法—目錄


  首先,有一點要聲明,下面所有文章的所有內容的代碼,都不是我一個人獨立完成的,它們來自於一本叫做《學習JavaScript數據結構和算法》(第二版),人民郵電出版社出版的這本書。github代碼地址是https://github.com/loiane/javascript-datastructures-algorithms

  先說下我個人對這本書的看法吧。對於數據結構的介紹不夠深入和詳細,對於那些計算機專業的前端從業者來說,十分的雞肋。而對於那些非計算機專業,又完全沒接觸過數據結構是什么東西的前端coder來說。其中的講解又十分的不具體,很多內容都是寥寥數筆一帶而過,完全沒有代表性,對於思路的講解並不明了,只是羅列了每一步驟,但是實際上單獨的列舉出每一步做了什么並沒什么用,我自己看代碼就可以了,用你說什么。當然,我也在網上找到了很多類似於本系列的文章,大多數都是基於此書的代碼,但是要么就是完全復制的代碼,解釋十分的少或者幾乎沒有,要么就是整體不清不楚,讓人不知所以然。

  所以,我就想在學習的過程中把自己的理解,自己對於這個數據結構的思路和每一行代碼在上下文中所起到的作用以及相互之間的影響等等寫出來。希望大家在學習數據結構的時候可以走的更容易一點。在學習的過程中,有不理解的地方,書中講的不易理解的地方,都是自己畫圖,自己去找資料,然后再回來結合代碼,給出一個“自認為”還不錯的解釋。

  終於,完成了有關用js來實現數據結構的所有內容,前后大概花了一個多月將近40小時的時間,一共16篇文章。有最基本的js數組的詳細講解。也有非線性的散列表、樹和圖。其實對於用js來實現數據結構,個人感覺更多要學習的是那種數據結構的思想。一旦你理解了這個數據結構的思想,那么自然,實現代碼也不過就是時間的問題了。本系列所有的內容,都是我一個字一個字打出來的,包括書中的代碼和自己加上的注釋,當然,其中概念性的問題一部分來自於此書,書中解釋不清楚的我都在文中附上了資料的鏈接。

  那么,如果各位老爺在閱讀的時候有不理解或者覺得不清楚的地方,還希望可以留言提出。互相學習。

  噢,對,還是要說一下我覺得這個系列的重點吧。重點在后6篇和前3篇(Array,hashMap,Tree和Graph)。而對於前面的棧,隊列等。是你學習后面的基礎,因為在樹,圖等數據結構的實現中,都用到了前面的數據結構。

  所以,大家如果想要學習數據結構。那么個人覺得這系列文章是個不錯的開始。或許你會問,我看完這系列文章會學到什么?我真的就懂了數據結構么?當然沒有。就單單拿一個圖來說,足夠寫一本厚厚的書了。所以,你學完這個系列,最多只是打開了數據結構的大門,邁出了你的右腳(或者左腳)向門里面的世界探了探,連走進這個大門都不算。

  

  最后說一下本系列的使用方法和大概的閱讀時間吧。

  使用方法:首先,你把代碼復制到本地,去掉所有的注釋,然后就着文章,看一遍代碼。然后自己打一遍代碼,有不明白的地方再去看注釋。這是本系列的服用說明。

  所花時間:每天一個小時,大概需要花上一個月。當然,不僅僅是讀一遍,而是跟着文章中的代碼和注釋完整的過了一遍自己的腦子。

  好了,不羅嗦了。就到這里吧。也算是給自己的交上了一份6分的答卷。

  

 

  下面是目錄:

    數據結構部分(已完結):

    1、用js來實現那些數據結構01(數組篇01-數組的增刪)

    2、 用js來實現那些數據結構02(數組篇02-數組方法)

    3、用js來實現那些數據結構03(數組篇03-排序及多維數組)

    4、用js來實現那些數據結構04(棧01-棧的實現)

    5、用js來實現那些數據結構05(棧02-棧的應用)

    6、用js來實現那些數據結構06(隊列)

    7、用js來實現那些數據結構07(鏈表01-鏈表的實現)

    8、用js來實現那些數據結構08(鏈表02-雙向鏈表)

    9、用js來實現那些數據結構09(集合01-集合的實現)

    10、用js來實現那些數據結構10(集合02-集合的操作)

    11、用js來實現那些數據結構11(字典)

    12、用js來實現那些數據結構12(散列表)

    13、用js來實現那些數據結構13(樹01-二叉搜索樹的實現)

    14、用js來實現那些數據結構14(樹02-AVL樹)

    15、用js來實現那些數據結構15(圖01)

    16、用js來實現那些數據結構16(圖02-圖的遍歷)

 

    附:算法部分也基本上全部完成了,其中比如搜索、排序算法, 比如函數式編程這幾篇文章是極力推薦大家去仔細閱讀一下的,因為如果你對這方面沒有深入的學習研究過,那么你閱讀學習下面的文章之后,會有不小的收貨。當然這里有一篇文章我個人的見解是你可以簡單閱讀,但是不懂也沒什么關系,因為它對於算法已經算是較為深入的部分了,就是js算法初窺05(算法模式02-動態規划與貪心算法)這一篇,如果你本身就有算法基礎,那么就當我沒說。

    算法部分:

    1、js算法初窺01(排序算法01-冒泡、選擇、插入)

    2、js算法初窺02(排序算法02-歸並、快速以及堆排序)

    3、js算法初窺03(簡單搜索及去重算法)

    4、js算法初窺04(算法模式01-遞歸)

    5、js算法初窺05(算法模式02-動態規划與貪心算法)

    6、js算法初窺06(算法模式03-函數式編程)

  

    最后,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM