有沒有區別,或者它們是同一事物的兩個術語?從理論的角度來看,有序列表和數組之間有什麼區別?
回答
雖然數組和列表之間有一些相似之處,但它們被用於不同的目的。
數組是連續的內存段,而列表只是一堆節點,每個節點都有指向「下一個」節點的指針(在雙向列表的情況下也指向「上一個」節點)。 O(1) - 支持隨機訪問(即通過任意給定的索引i),但刪除/插入元素到數組中很慢 - O(n),因爲必須在所有元素之後移動所有元素刪除/插入元素。另一方面,列表不支持有效的隨機訪問(同時支持高效的連續遍歷),但插入和刪除操作快 - O(1)。
看這張圖片:: 和this link爲了更好的解釋。
數組中的項不一定是任何特定的順序。
通常,可以更快速地將項目添加到列表中的特定點,而不是在等效點添加新項目。 (在數組中,您必須對其他條目進行混洗;在列表中,只需調整最多3個元素中的適當指針即可)。類似地,用於從列表和數組中刪除元素。
訪問N th列表中的項需要O(N)時間,但是O(1)時間是一個數組。
所以數組是一個基於硬件(或實現)的概念,而有序列表是一種抽象數據類型? – Nick 2012-01-29 07:20:12
鏈接列表也是基於實現的(儘管人們可能會認爲它們比數組更「抽象」)。順便說一句,抽象數據類型粗略地說就是您的數據結構必須支持的接口。讓數組和鏈表實現相同的接口並不難(例如,查看Java中的ArrayList vs LinkedList)。雖然,關鍵操作的效率:插入,刪除和[](在給定索引i處訪問)將大不相同。 – 2012-01-29 07:36:21
數組和列表是不同的數據結構。數組不一定是有序的。性能明智,維護有序列表非常昂貴:O(N)插入,刪除,但是你可以比O(N)更快地進行搜索(使用二進制搜索等)。使用常規數組,搜索是O(N)。使用數組,您可以隨機訪問O(1)中的成員,而這需要O(N)在列表中。
- 1. 從SOA角度來看Registry和Repository之間有什麼區別?
- 2. 從設計的角度來看,Log()和Log(LogLevel)之間有什麼區別嗎?
- 3. 列表,排序列表和數組列表之間有什麼區別? (c#)
- 4. 從任何角度來看,++ i和i + = 1之間的區別
- 5. 從.NET的角度來看,EXE和DLL之間有什麼特別的區別嗎?
- 6. 從內核的角度來看,GLI和CLI在Linux中有什麼區別
- 7. 衝突序列化和序列化之間有什麼區別?
- 8. 在Python中列表和列表[:]之間有什麼區別?
- 9. 從編譯器/ CLR的角度來看,Interface和具體實例之間有什麼區別?
- 10. 原始數組和引用數組之間有什麼區別?
- 11. 角度數據表dtInstance.reloadData()與dtInstance.rerender()之間的區別是什麼
- 12. 數組和散列有什麼區別?
- 13. 從編碼的角度來看,kafka和mapr流之間有什麼不同?
- 14. 數據沿襲和數據來源之間有什麼區別?
- 15. ERB評論中'<%#'和'<%#='之間有什麼區別?
- 16. 深度數據和點雲之間有什麼區別?
- 17. 「層」和「層」之間有什麼區別?
- 18. Tableau和QlikView之間有什麼區別
- 19. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 20. @Entity和@embeddable之間有什麼區別
- 21. ContentObservable和DataSetObservable之間有什麼區別?
- 22. touchmove和gesturechange之間有什麼區別?
- 23. :notification.flags和notification.defaults之間有什麼區別?
- 24. proc和lambda之間有什麼區別?
- 25. :: after和after之間有什麼區別?
- 26. read()和io.read()之間有什麼區別?
- 27. Request()和Request.Form()之間有什麼區別?
- 28. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 29. getA()和this.getA()之間有什麼區別?
- 30. (int)和intval()之間有什麼區別?
它與HTML有什麼關係? – doc 2016-08-14 20:38:29