【发布时间】:2021-05-19 13:22:28
【问题描述】:
如果我有 2 个算法 A 和 B 其中 A 使用 O(n logn) 时间和 O(1) 额外空间。 另一方面,B 使用 O(nk) 时间和 O(k-1) 额外空间。 大家觉得哪一个会是更好的选择呢?为什么?
【问题讨论】:
-
对于我要解决的给定问题,我会使用性能更好的那个。复杂性不能告诉你,它只能给你第一个提示
-
你能告诉我你如何根据问题来解决这个问题
-
O(n logn)可以有t = n * log(n)执行时间,而第二个算法t = 1e100 * n。因此,即使第二个算法有更好的 Big O,第一个算法对于所有合理的输入都更快。空间也一样 -
如果 n 是问题大小并且 k 是常数,O(kn) == O(n) 并且 O(k-1) == O(1)。也就是说,@largest_prime_is_463035818 一针见血。请记住,O 描述的是渐近行为。
-
运行基准测试。如果您想在实际编写代码之前获得估计,仅靠渐近复杂度并没有真正帮助(对于某些给定的
n和k),因为它忽略了常数因素
标签: python c++ algorithm data-structures