7、查找第N个元素时数组比较快,链表比较慢
一维数组是根据数据连续的线性排列来管理数据顺序,而链表是用有方向性的“链”连接结点来管理数据的顺序。
根据它们的特点,我们来尝试 “查找第N个元素” 的操作来看一下数组与链表在数据管理操作上的优缺点。
查找按顺序排列的数据的第N个元素时,数组可以根据元素号直接找到该元素。例如,数组的第5个元素是array[4],根据数组名可以直接找到该元素。
而链表必须从头结点开始遍历直到第N个元素为止。例如要查找链表中的第5个元素,顺序如下。
- 查找第1个结点
- 从第1个结点查到后继的第2个结点
- 从第2个结点查到后继的第3个结点
- 从第3个结点查到后继的第4个结点
- 从第4个结点查到后继的第5个结点
没有以上5个步骤就无法查找到第5个结点。如果查找的不是第5个结点,而是第10000个结点的话,链表查找第N个结点的操作与数组相比需要花费更长的时间。
因此,查找第N个元素时,利用数组中的下标可以直接查到,但在链表结构中查找时需要从第1个元素开始顺序遍历而花费不少时间。
数组和链表查找第5个元素的顺序和时间消耗的比较: