【发布时间】:2018-11-01 18:34:24
【问题描述】:
我正在尝试计算链接列表与指针数组上的合并排序的时间效率(不担心我将来将如何使用它,只担心数据排序的速度)。
这样会更快。我想使用指针数组需要额外的内存访问层。 但同时,访问链表会更慢假设我们已经知道链表的长度,mergesort 仍然需要遍历链表,从内存跳转到内存,直到获得指向链表中间节点的指针列表,我认为它比数组更耗时。
有人有什么见解吗?是否更符合要排序的数据?
【问题讨论】:
-
当您有这样的问题时 - 实现两者并进行比较。这肯定取决于您的实现,而不是“抽象”的实现。
-
使用
array of pointers实现的效率应该与linked list of pointers的效率进行比较。无论如何,我真的不认为指针访问会成为这两种数据结构中的任何一种的瓶颈。 -
@EugeneSh。我试图理解总体上的差异,从而理解抽象性。在实现方面,它是指针数组上的标准合并排序算法,例如 *char[] 与带有 ( *char data; struct *next) 的链表结构
-
it is the standard merge sort algorithm on an array of pointers对于合并排序,您不需要 额外的指针数组。 (因此您可以省略这些步骤)。 -
@wildplasser 请提供参考说明如何在不使用额外指针数组的情况下对指针数组进行合并排序。