顺序表(数组)和链表的比较
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、构建动态性比较强的线性表。
1、存取方式上,数组可以顺序存取或者随机存取,而链表只能顺序存取;
2、存储位置上,数组逻辑上相邻的元素在物理存储位置上也相邻,而链表不一定;
3、存储空间上,链表由于带有指针域,存储密度不如数组大;
4、按序号查找时,数组可以随机访问,时间复杂度为O(1),而链表不支持随机访问,平均需要O(n);
5、按值查找时,若数组无序,数组和链表时间复杂度均为O(1),但是当数组有序时,可以采用折半查找将时间复杂度降为O(logn);
6、插入和删除时,数组平均需要移动n/2个元素,而链表只需修改指针即可;
7、空间分配方面,数组在静态存储分配情形下,存储元素数量受限制,动态存储分配情形下,虽然存储空间可以扩充,但需要移动大量元素,导致操作效率降低,而且如果内存中没有更大块连续存储空间将导致分配失败;链表存储的节点空间只在需要的时候申请分配,只要内存中有空间就可以分配,操作比较灵活高效;
数组应用场景:
1、注重存储密度;
2、经常做的运算是按序号访问数据元素;
3、数组更容易实现,任何高级语言都支持;
4、构建的线性表较稳定。
链表应用场景:
1、对线性表的长度或者规模难以估计;
2、频繁做插入删除操作;
3、构建动态性比较强的线性表。
相关文章推荐
- 顺序表和链表的比较
- 顺序存储结构与链式存储结构的比较(也可以说的顺序表与链表的比较)
- 比较顺序表和链表的优缺点
- 算法Sedgewick第四版-第1章基础-009一链表与数组的比较及其他数据结构
- 顺序存储结构与链式存储结构的比较(也可以说的顺序表与链表的比较)
- 数组与链表的比较
- 顺序存储结构与链式存储结构的比较(也可以说的顺序表与链表的比较)
- 数据结构的选择-“数组、链表、树、哈希表”选哪个(性能比较)?
- 【数据结构】顺序表和链表的比较
- 比较顺序表和链表的优缺点
- 数据结构的选择-“数组、链表、树、哈希表”选哪个(性能比较)?
- 顺序表和链表的比较
- 循环链表,双链表,顺序表和链表的比较
- 基本的排序算法之—— 冒泡排序(稳定)(对于固定的内存空间数组或顺序表,对于单链表也可以)
- 链表与数组之比较
- 顺序表和链表的比较
- 链表系列一:比较链表与数组
- 数据结构与算法-“数组、链表、树、哈希表”选哪个(性能比较)?
- 数据结构学习笔记——顺序表和链表的比较
- 2007.08.24静态单链表的基本操作及顺序表和链表的比较