字典排序的合并排序最坏情况运行时间?
使用合并排序算法将每个长度为 n 的 n 个字符串列表按字典顺序排序。该计算的最坏情况运行时间是?
我把这个问题作为作业。我知道合并排序在 O(nlogn) 时间内排序。对于长度的字典顺序,它是 n 乘以 nlogn 吗?或 n^2 ?
A list of n strings each of length n is sorted into lexicographic order using the merge sort algorithm. The worst case running time of this computation is?
I got this question as a homework. I know merge sort sorts in O(nlogn) time. For lexicographic order for length in is it n times nlogn ? or n^2 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
该算法的每次比较都是
O(n)
[比较两个字符串是O(n)
最坏的情况 - 您可能仅在最后一个字符上检测到哪个“更大”] ,您在合并排序中进行了O(nlogn)
比较。因此你得到
O(nlogn * n) = O(n^2 * logn)
Each comparison of the algorithm is
O(n)
[comparing two strings isO(n)
worst case - you might detect which is "bigger" only on the last character], You haveO(nlogn)
comparisons in mergesort.Thus you get
O(nlogn * n) = O(n^2 * logn)
但根据递推关系
T(n) = 2T(n/2) + O(m*n)
将
当 m = n 时,T(n) = 2T(n/2) + O(n^2)
那么结果将是 O(n^2) 而不是 O(n^2logn)。
如果我错了请纠正我。
But according to the recurrence relation
T(n) = 2T(n/2) + O(m*n)
Will be
T(n) = 2T(n/2) + O(n^2) when m = n
Then the result will be O(n^2) and not O(n^2logn).
Correct me if I'm wrong.
因此解决了
hence solved
时间复杂度递推关系为
显然,树的高度将是 logn 。
因此时间复杂度为O(n^2*logn)。
Time complexity recurrence relation is
So clearly the height of tree would be logn.
Thus time complexity is O(n^2*logn).