您的位置:首页 > 其它

顺序表(数组)和链表的比较

2015-02-13 15:02 183 查看
特点对比:

1、存取方式上,数组可以顺序存取或者随机存取,而链表只能顺序存取;

2、存储位置上,数组逻辑上相邻的元素在物理存储位置上也相邻,而链表不一定;

3、存储空间上,链表由于带有指针域,存储密度不如数组大;

4、按序号查找时,数组可以随机访问,时间复杂度为O(1),而链表不支持随机访问,平均需要O(n);

5、按值查找时,若数组无序,数组和链表时间复杂度均为O(1),但是当数组有序时,可以采用折半查找将时间复杂度降为O(logn);

6、插入和删除时,数组平均需要移动n/2个元素,而链表只需修改指针即可;

7、空间分配方面,数组在静态存储分配情形下,存储元素数量受限制,动态存储分配情形下,虽然存储空间可以扩充,但需要移动大量元素,导致操作效率降低,而且如果内存中没有更大块连续存储空间将导致分配失败;链表存储的节点空间只在需要的时候申请分配,只要内存中有空间就可以分配,操作比较灵活高效;

数组应用场景:

1、注重存储密度;

2、经常做的运算是按序号访问数据元素;

3、数组更容易实现,任何高级语言都支持;

4、构建的线性表较稳定。

链表应用场景:

1、对线性表的长度或者规模难以估计;

2、频繁做插入删除操作;

3、构建动态性比较强的线性表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: