【发布时间】:2016-11-19 04:08:56
【问题描述】:
http://www.geeksforgeeks.org/merge-k-sorted-linked-lists/
参考链接: 请解释分治策略如何给出 O(nk Log k) 复杂度。 此外,我以稍微不同的方式编写了相同的代码。唯一的区别在于合并的模式。我将前 2 个链接结果合并,然后将它们的结果与另一个链接列表合并。
这会有什么复杂性?
Node * mergek(){
int n;
puts("Enter number of linked list you want to enter");
scanf("%d",&n);
Node ** arr=malloc(sizeof(Node *)*n);
int i=0;
for(i=0;i<n;i++){
arr[i] = takeInput();
}
for(i=0;i<n;i++){
print(arr[i]);
}
Node * temp=NULL;
for(i=0;i<n;i++){
if(i==0){
temp=merge(arr[i],arr[i+1]);
i=i+1;
}
else{
temp=merge(arr[i],temp);
}
}
return temp;
}
我想知道这是否会具有相同的复杂性,例如。 O(nklog(k)) 复杂度。
合并次数保持不变。
【问题讨论】:
-
您的代码实际上并没有进行合并,因为您没有显示您的
merge()代码。我们只知道它是O(n) * O(merge)
标签: c merge linked-list time-complexity