1.數組
查詢快:數組要求是一塊連續的內存空間來存儲,這就要求在物理上這一片空間是連續的,每一個元素都有指定的索引index指向內存地址,所以查詢對時候,可根據index快速找到對應地址存儲的信息,此爲查詢快.
增刪慢:但要進行增刪的時候,就必須將目標位置後的全部元素都總體移動,所以就比較耗時,此爲增刪慢.
2.鏈表
增刪快:鏈表在物理上是動態地分配儲存空間,不要求連續性,可是要求邏輯上的連續。它須要存儲每一個元素在內存中的地址,以及它相鄰元素的地址,而後像鏈條同樣把各元素鏈起來,保證了在邏輯上的連續性。
好比:
單鏈表,每一個元素除了存儲自己的值外,還存儲了前驅的引用,也就是存儲了前驅所在的內存地址信息。
雙鏈表就是不只存儲了前驅的引用還存儲了後繼的引用.數組
增長元素的時候,只需給增長元素添加其前元素或後元素的地址;刪除元素的時候,修改目標元素前驅和後驅的首位鏈接地址. 故此爲增刪快。索引
查詢慢:因爲沒有像數組那樣的索引,所以,查詢的時候須要遍歷整個鏈表全部元素的內存地址,而後才能肯定目標元素,此爲查詢慢。內存
內存中的存儲形式能夠分爲連續存儲和離散存儲兩種。所以,數據的物理存儲結構就有連續存儲和離散存儲兩種,它們對應了咱們一般所說的數組和鏈表。遍歷
*由於數組是連續存儲的,在操做數組中的數據時就能夠根據離首地址的偏移量直接存取相應位置上的數據,可是若是要在數據組中任意位置上插入一個元素,就須要先把後面的元素集體向後移一位爲其空出存儲空間。引用
與之相反,鏈表是離散存儲的,因此在插入一個數據時只要申請一片新空間,而後將其中的鏈接關係作一個修改就能夠,可是顯然在鏈表上查找一個數據時就要逐個遍歷了。
考慮以上的總結可見,數組和鏈表各有優缺點。在具體使用時要根據具體狀況選擇。當查找數據操做比較多時最好用數組;當對數據集中的數據進行添加或刪除比較多時最好選擇鏈表。鏈表
做者:MonsieurX
連接:https://www.jianshu.com/p/0b7b41e65194
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。總結