集合中常用算法总结
1,沖突鏈表
沖突鏈表主要用于HashMap,HashTable中,內部采用數組保存鏈表,鏈表內部是單向鏈接,插入的時候會采用頭部插入法,
插入的鏈表包裹數據都是無序的,由于容量的增加,會導致整個數據的重新HASH,所以,兩次循環同一個HASH鏈表,可以得到不同的順序。
內部實現難點是根據KEY的HASH值獲取Bucket
?
?
2,雙向鏈表
雙向鏈表相對于數組其在插入上的操作少了,數組為了更改下標,需要移動后面所有的數組,而雙向鏈表只需要更改兩個引用就可以達到相同的效果,所有插入的效率遠遠高于數組
?
?
3,紅黑樹
JAVA數組內部采用一種近視平衡二叉樹,紅黑樹來實現。紅黑樹有比絕對平衡樹更高的插入效率,因為不需要保證絕對的平衡。
紅黑樹是一種近似平衡的二叉查找樹,它能夠確保任何一個節點的左右子樹的高度差不會超過二者中較低那個的一陪。具體來說,紅黑樹是滿足如下條件的二叉查找樹(binary search tree):
紅黑樹的難點是左旋和右旋
?
?
?
4,循環數組
循環數組內部采用數組實現,只是增加頭和尾的實現,用來實現棧和隊列的機制。其內部實現效率高于雙向鏈表實現的棧和隊列。
?
轉載于:https://www.cnblogs.com/yeyouya/p/6735212.html
總結
- 上一篇: 从C++Primer某习题出发,谈谈C语
- 下一篇: 安装python sklearn经验总结