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)
。 - Mark Lakata