链表最烦了,懒得写代码,就写一下思路吧。
建一个大小为K的堆,初始包含K个链表的第一个元素。
迭代执行ExtractMin,然后用被抽取元素所在链表的下一个元素填充到堆里,一直到堆大小为0就行了
堆的规模为K,所以抽取和插入操作都是O(lgk),一共抽取和插入n次,所以时间复杂度是O(nlgk)
本文介绍了一种利用堆优化的算法来合并多个已排序的链表。通过建立一个初始包含K个链表首元素的堆,并迭代执行ExtractMin操作,随后用被抽取元素所在链表的下一个元素填充堆,直至堆为空。该方法有效降低了时间复杂度至O(nlgk)。
链表最烦了,懒得写代码,就写一下思路吧。
建一个大小为K的堆,初始包含K个链表的第一个元素。
迭代执行ExtractMin,然后用被抽取元素所在链表的下一个元素填充到堆里,一直到堆大小为0就行了
堆的规模为K,所以抽取和插入操作都是O(lgk),一共抽取和插入n次,所以时间复杂度是O(nlgk)
1727
1247
496
560

被折叠的 条评论
为什么被折叠?