一、数组的特点
1、数组是一种线性表数据结构。它是一组连续的内存空间,来存储一组具有相同类型的数据。
2、数组需要预留空间,在使用前要中评占内存的大小,可能会浪费内存空间。
3、随机读取效率高。根据下标随机访问的时间复杂度为O(1);
4、低效的“插入和删除”。为了保存数据的连续性,在做插入和删除时,需要对数组里的数据进行搬移。
5、不利于扩展。数据定义的空间不够时要重新定义数组。
二、链表的特点
1、链表不需要一块连续的空间,它通过“指针”将一组零散的内存块串起来使用。
2、插入和删除操作数据很容易,只需要将相邻节点的指针改变,时间复杂度为O(1)。
3、查询数据效率低,需要根据指针一个结点一个结点地依次遍历,直到找到相应节点。时间复杂度为O(n)。
4、扩展方便。
三、数组的优缺点
1、优点:随机访问性强;查找速度快(前提是要知道数组下标)。
2、缺点:插入和删除效率低;可能会浪费内存;内存空间要求高,必须要有足够的连续内存空间;数组大小固定,不利于扩展。
四、链表的优缺点
1、优点:插入和删除速度快;内存利用率高;大小没有固定,拓展很灵活;
2、缺点:不能随机查找,必须从第一个开始遍历,查找效率低;链表的每个结点需要消耗额外的空间云存储下一个结点指针。