使用BST和mergesort正确计算函数的时间复杂度?

问题描述 投票:0回答:1

如果我有执行这些关键操作的方法:

  • 对于任何树遍历(?),使用顺序遍历O(n)将二进制搜索树转换为数组
  • 使用mergesort执行排序O(nlog(n)
  • 然后在数组上执行for循环迭代100次O(1)(恒定时间?)

因此此方法的时间复杂度应为...O(n)* O(nLog(n))* O(1)= n ^ 2 Log(n)

Q:我的方法的时间复杂度是否等于O(n ^ 2),因为我们考虑了最大多项式?

Q:空间= [从bst进行数组转换] O(n)+ O(n)[mergesort] = O(n)空间复杂度吗?

这三个操作没有嵌套。依次完成(一个接一个)

任何想法?

algorithm time-complexity binary-search-tree mergesort space-complexity
1个回答
0
投票

对于任何树遍历(?),使用顺序遍历O(n)将二进制搜索树转换为数组

将二进制搜索树转换为数组的算法的

最佳时间复杂度O(n)

然后在数组上执行100次O(1)(恒定时间?)的for循环迭代

取决于数组的大小。如果数组的大小是常数,是的,时间复杂度将是O(1),但是我怀疑数组的大小是N,在这种情况下,时间复杂度将是O (n)

因此此方法的时间复杂度应为... O(n)* O(nLog(n))* O(1)= n ^ 2 Log(n)

Q1。如果按顺序进行操作,则应将其汇总。总时间复杂度为O(n)+ O(nLog(n))+ O(n)= O(nLog(n))

Q2。 O(n)+ O(n)= O(n)的存储复杂度是正确的(假设等式的左边对您的算法是正确的)。

P.S您可以通过遍历二进制搜索树来遍历in order,从而消除了遍历二进制数组的需要,从而使方法O(n)的总时间复杂度。]

© www.soinside.com 2019 - 2024. All rights reserved.