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

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

  先說下我我的對這本書的見解吧。對於數據結構的介紹不夠深刻和詳細,對於那些計算機專業的前端從業者來講,十分的雞肋。而對於那些非計算機專業,又徹底沒接觸過數據結構是什麼東西的前端coder來講。其中的講解又十分的不具體,不少內容都是寥寥數筆一帶而過,徹底沒有表明性,對於思路的講解並不明瞭,只是羅列了每一步驟,可是實際上單獨的列舉出每一步作了什麼並沒什麼用,我本身看代碼就能夠了,用你說什麼。固然,我也在網上找到了不少相似於本系列的文章,大多數都是基於此書的代碼,可是要麼就是徹底複製的代碼,解釋十分的少或者幾乎沒有,要麼就是總體不清不楚,讓人不知因此然。html

  因此,我就想在學習的過程當中把本身的理解,本身對於這個數據結構的思路和每一行代碼在上下文中所起到的做用以及相互之間的影響等等寫出來。但願你們在學習數據結構的時候能夠走的更容易一點。在學習的過程當中,有不理解的地方,書中講的不易理解的地方,都是本身畫圖,本身去找資料,而後再回來結合代碼,給出一個「自認爲」還不錯的解釋。前端

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

  那麼,若是各位老爺在閱讀的時候有不理解或者以爲不清楚的地方,還但願能夠留言提出。互相學習。git

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

  因此,你們若是想要學習數據結構。那麼我的以爲這系列文章是個不錯的開始。或許你會問,我看完這系列文章會學到什麼?我真的就懂了數據結構麼?固然沒有。就單單拿一個圖來講,足夠寫一本厚厚的書了。因此,你學完這個系列,最多隻是打開了數據結構的大門,邁出了你的右腳(或者左腳)向門裏面的世界探了探,連走進這個大門都不算。算法

  

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

  使用方法:首先,你把代碼複製到本地,去掉全部的註釋,而後就着文章,看一遍代碼。而後本身打一遍代碼,有不明白的地方再去看註釋。這是本系列的服用說明。數組

  所花時間:天天一個小時,大概須要花上一個月。固然,不只僅是讀一遍,而是跟着文章中的代碼和註釋完整的過了一遍本身的腦子。數據結構

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

  

 

  下面是目錄:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

    附:算法部分也基本上所有完成了,其中好比搜索、排序算法, 好比函數式編程這幾篇文章是極力推薦你們去仔細閱讀一下的,由於若是你對這方面沒有深刻的學習研究過,那麼你閱讀學習下面的文章以後,會有不小的收貨。固然這裏有一篇文章我我的的看法是你能夠簡單閱讀,可是不懂也沒什麼關係,由於它對於算法已經算是較爲深刻的部分了,就是js算法初窺05(算法模式02-動態規劃與貪心算法)這一篇,若是你自己就有算法基礎,那麼就當我沒說。

    算法部分:

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

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

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

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

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

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

  

    最後,謝謝!

相關文章
相關標籤/搜索