7、查找第N个元素时数组比较快,链表比较慢

一维数组是根据数据连续的线性排列来管理数据顺序,而链表是用有方向性的“链”连接结点来管理数据的顺序。

根据它们的特点,我们来尝试 “查找第N个元素” 的操作来看一下数组与链表在数据管理操作上的优缺点。

 

查找按顺序排列的数据的第N个元素时,数组可以根据元素号直接找到该元素。例如,数组的第5个元素是array[4],根据数组名可以直接找到该元素。

而链表必须从头结点开始遍历直到第N个元素为止。例如要查找链表中的第5个元素,顺序如下。

  1. 查找第1个结点
  2. 从第1个结点查到后继的第2个结点
  3. 从第2个结点查到后继的第3个结点
  4. 从第3个结点查到后继的第4个结点
  5. 从第4个结点查到后继的第5个结点

没有以上5个步骤就无法查找到第5个结点。如果查找的不是第5个结点,而是第10000个结点的话,链表查找第N个结点的操作与数组相比需要花费更长的时间。

 

因此,查找第N个元素时,利用数组中的下标可以直接查到,但在链表结构中查找时需要从第1个元素开始顺序遍历而花费不少时间。

 

数组和链表查找第5个元素的顺序和时间消耗的比较:

7、查找第N个元素时数组比较快,链表比较慢