哈希表(Hash Table)
- 全部符合鍵值對即key-value的結構就是哈希。數組其實也是一種哈希。
- 計數排序(複雜度(n+max))沒法統計負數和小數,須要一個hash表,其桶排序的極限比快排(複雜度NLogN)還快。
- 數組的長度(length)不是指數組的個數,而是index最大值+1。如index=66,則length=67。
桶排序與計數排序的區別:
桶排序中一個桶能夠放一個範圍內的多個數據,在各個桶中又能夠用其餘方法排序,其快速之處在於只用對比同一個桶內的數字而無需與其餘桶的數字做對比。與計數排序相比,桶排序須要做二次對比,但可省略桶的個數。html
基數排序與計數排序的區別:
基數排序是從最低位開始,依次進行一次排序。這樣從最低位排序一直到最高位排序完成之後, 數列就變成一個有序序列。其最大的好處是能夠用最多十個桶來排序很是大的數字而無需浪費大量的桶,可是要做屢次對比。node
隊列(Queue)
隊列的特色是先進先出(push-shift),能夠用數組實現
舉例:排隊數組
棧(Stack)
棧的特色是先進後出(push-pop),也能夠用數組實現
舉例:盜夢空間spa
鏈表(Linked List)
- 數組沒法直接刪除中間的一項,鏈表能夠
- 用哈希(JS裏面用對象表示哈希)實現鏈表,哈希裏面指向了哈希
- head:第一個哈希對象,即鏈表的表頭,找到表頭即可找到後面的全部項。
- node:節點,表頭也是節點。
鏈表與數組相比存在的優缺點:
鏈表與數組相比,其優勢是可隨意刪除任何一項,而其缺點是很難取到鏈表的第n項。即數組查詢很快,鏈表刪除很快。htm
樹(tree)
舉例:層級結構、DOM對象
如上圖所示:層數,從0開始,共兩層;深度即一共有多少層,上圖深度爲3;節點:每個哈希就是一個節點,上圖節點個數爲9:其中沒有子節點的節點稱爲葉子節點。排序
- 二叉樹(Binary tree):每一個節點最多隻可分兩個分支。
- 滿二叉樹(Full Binary tree):一棵深度爲k,且有2^k-1個節點的二叉樹,稱爲滿二叉樹。
- 徹底二叉樹(Complete Binary tree):一棵二叉樹中,除最後一層外,若其他層都是滿的,而且UI後一層或者是滿的,或者是在右邊缺乏連續若干節點。
- 徹底二叉樹和滿二叉樹能夠用數組實現,其餘樹能夠用哈希(對象)實現。