经典指数          
原因
3045
浏览数
0
收藏数
 

将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序,时间复杂度为()?
  • O(N * M * logN)
  • O(N*M)
  • O(N)
  • O(M)

     举报   纠错  
 
切换
1 个答案

选A。上面答案都说的不清晰。

其实算法不同结果也不一样。

1、两两合并链表。合并链表复杂度 * 一次合并次数 *

所有合并次数。两两合并的复杂度会指数递增,合并数会指数递减。一共应该是log(N)次。前面的合并复杂度较高。所以一般不采用该方法来合并链表。

2、利用堆来合并,( O(N) + O(log N * N )) * M。

  先利用最链表第一个数,N个数建立堆,复杂度 O (N)

  重构堆,并排序,复杂度 O(logN * N )

  每个链表M个数,上述两步重复M次。结果为

  M * (O(N) + O(logN * N))= O (M * N * logN)

 
切换
撰写答案