用于双向链表合并排序的 Javascript 程序
给定一个双向链表,编写一个函数,使用归并排序对双向链表进行升序排序。
比如下面的双向链表要改成24810
已经讨论了单链表的合并排序。这里的重要变化是在合并两个列表时也修改了先前的指针。
下面是双向链表合并排序的实现。
Javascript
输出:
Linked List after sorting
Forward Traversal using next pointer
3 4 5 10 20 30
Backward Traversal using prev pointer
30 20 10 5 4 3
时间复杂度:上述实现的时间复杂度与数组的 MergeSort 的时间复杂度相同。它需要 Θ(nLogn) 时间。
空间复杂度: O(1)。我们只使用恒定数量的额外空间。
您可能还想查看双向链表的快速排序
更多详细信息,请参阅关于双向链表合并排序的完整文章!