1.数组的特点
(1)数组是一块连续的区域。
(2)数组遇到预留空间,在使用前需要先申请预占内存的大小,可能会浪费内存空间
(3)插入数据和删除数据效率低,因为在插入数据时,插入位置之后的所有数据都要后移,删除数据时,删除位置之前的说有数据都要向前移动。
(4)读取效率高,因为数组是连续的,直接能知道每个数据的内存地址,可以直接读取数据。
(5)不利于扩展,数组定义的空间不够时,需要重新定义数组。
2.链表的特点
(1)链表的存储是不连续的,你可以随机存在任何内存中的任何地方。
(2)增加数据和删除数据效率高,当增加一个数据时,它只需要将自己的位置告诉前一个,然后再从前一个数据那,得到后一个数据的地址。
(3)查找数据的效率较低,因为他的查找,每次都需要从头遍历。
(4)不制定大小,扩展方面。
3.图示区别
- | 数组 | 链表 |
---|---|---|
读取 | O(1) | O(n) |
插入 | O(n) | O(1) |
删除 | O(n) | O(1) |