链表上的mergesort与指针数组的时间效率

时间:2018-11-01 18:34:24

标签: c algorithm

我试图找出链表上的mergesort与指针数组的时间效率(不担心将来我将如何使用它,仅担心数据排序的速度)。 / p>

哪个会更快。我想象使用指针数组需要附加的内存访问层。 但是同时,访问链表的速度会变慢。假设我们已经知道链表的长度,那么mergesort仍然需要遍历链表从内存跳转到内存,直到您获得指向链表中间节点的指针为止。列表,我认为比数组花费更多的时间。

有人有什么见解吗?排序数据是否更符合上下文?

1 个答案:

答案 0 :(得分:0)

实现链接列表与指针数组的合并排序的主要区别在于,使用该数组最终必须使用辅助数组。算法复杂度相同,O(n * log(n))相同,但是数组版本使用O(n)额外的内存。在链接列表的情况下,您不需要使用额外的内存。

在实际的实现中,两者的运行时性能应该相差一个常数,但不足以使两者相提并论。也就是说,如果您有一个指针数组,则可能无法从将其转换为链接列表,进行排序并将其转换回数组的过程中受益。给定一个链表,您也不会从创建数组,排序,然后构建新数组中受益。