双链表归并排序

Merge sort on a double linked list

阅读对 linked 列表进行排序的好方法(除了分配数组和快速排序),合并排序似乎是更好的方法之一。

参见:Merge Sort a Linked List

关于这个主题的当前问题对于天气列表是单人还是双人来说是非特定的linked。

我的问题是:

是否有利用双重 linked 列表的改进合并排序方法?

(或者使用与单个 linked 列表相同的方法并分配 previous link 只是为了确保列表一样好仍然有效)

据我所知,在对双向链表进行归并排序时,没有特别省时的技巧,但对单向链表不起作用。

归并排序最初是为存储在磁带卷上的数据开发的,这些数据只能向前读取,而大多数归并排序的标准实现只对元素进行向前传递。 mergesort 所需的两个主要操作是将输入分成两半(在单链表和双向链表中都很难)和将元素合并回一起(在两种情况下基本相同)。因此,如果不做比标准合并排序更聪明的事情,我不希望有任何重大的加速。