數組:
優點:
1. 數組的主要優點是根據下標值訪問效率會很高
2.但是如果希望根據元素來查找對應的位置?
3.比較好的方法是先對數組排序,再進行二分查找
缺點:
需要先對數組排序,生成有序數組,才能提高查找效率
數組在插入和刪除數據時,需要有大量的位移操作(插入中間或者首部時),效率很低
鏈表:
優點:
1.鏈表的插入和刪除操作效率都很高
缺點:
查找效率低,需要從頭依次查找鏈表的每一項
即使插入和刪除效率高,但是如果插入和刪除中間位置,還是要重頭找到對應的數據
哈希表:
優點: 插入/查詢/刪除效率非常高
缺點:
1.空間利用率不高,底層使用的是數組,並且使用的某些單元是沒有被利用的
2.哈希表中的元素是無序的,不能按照固定的順序來遍歷哈希表中的元素
3.不能快速的找出哈希表中的最大值或者最小值
樹結構:
在某種場景下,使用樹結構會更加方便
因為樹結構是非線性,可以表示一對多
比如文件的目錄結構
對於一個平衡樹的插入和查找等效率為O(logN) 平衡樹: 樹兩邊的數據均勻分布 非平衡樹: 樹兩邊的數據不均勻分布
連續插入有序的數據,樹分布不均勻,變成一個鏈表結構,插入和查找等效率變成 O(N)