算法导论6.5-8堆排序-K路合并

来源:互联网 发布:软件测试高级证书 编辑:程序博客网 时间:2024/05/15 06:50

一、题目

请给出一个时间为O(nlgk)、用来将k个已排序链表合成一个排序链表算法。此处n为所有输入链表中元素的总数。(提示:用一个最小堆来做k路合并)


二、步骤

step1:取每个链表的第一个元素,构造成一个含有k个元素的堆

step2:把根结点的值记入排序结果中。

step3:判断根结点所在的链表,若该链表为空,则go to step4,否则go to step5

step4:删除根结点,调整堆,go to step2

step5:把根结点替换为原根结点所在链表中的第一个元素,调整堆,go to step 2


三、代码

产品代码
测试代码
可以使用git工具下载、更新、提交、评论代码