轉自:https://blog.csdn.net/qq_25186987/article/details/53886809
1.只比較操作
因為數組可以隨機訪問,所以它的查詢和修改效率更高,但在增加刪除元素時需要移動元素,所以效率低;
鏈表只能順序訪問,所以它查詢修改效率低,但是增加刪除時只需修改指針指向就可以了,所以效率高。
但是在增加和刪除時,也包括查詢的操作,上面並沒有提到,所以到底是哪個數據結構更快呢?
2.實驗
轉自:https://blog.csdn.net/qq_25186987/article/details/53886809
這個鏈接進行了實驗,發現在總的長度增加時,還是數組的效率更高。
得出結論:在靠前的位置插入數據,鏈表效率較高,在靠后位置插入數據,數組效率較高。
另外評論區中提到,數組可能會存在容量不足重新申請空間+移動的問題,這個我也想到了,回復說,這個產生的機會是比較少的,擴容不是每次都觸發,而且每次都會2倍擴容,和鏈表操作相比,並不特別影響效率。
3. 理論分析
轉自:https://cloud.tencent.com/developer/article/1415172
從內存管理角度:
在OS中有不同的寄存器級別,速度越來越慢,針對數據來說,它是連續的一塊空間,所以由於局部性原理,讀取時會將它部分或者全部元素放入緩存中,而鏈表是分散在堆中間中的,不能方便地讀取到緩存中,所以速度慢。
所以總的來說,在CRAD方面,其實數組效率整體都高於鏈表的。