为了账号安全,请及时绑定邮箱和手机立即绑定

bigO,你如何计算/近似它?

bigO,你如何计算/近似它?

bigO,你如何计算/近似它?大多数拥有CS学位的人肯定会知道Big O代表什么。它可以帮助我们衡量算法的实际效率(如何),如果你知道你试图解决的问题属于哪个类别,你可以弄清楚是否仍然可以挤出那么少的额外性能。1但我很好奇,你如何计算或近似算法的复杂性?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

小提示:big O符号用于表示渐近复杂度(即,当问题的大小增长到无穷大时),并且它隐藏了一个常量。

这意味着在O(n)中的算法和O(n 2)中的算法之间,最快的并不总是第一个(尽管总是存在n的值,使得对于大小> n的问题,第一个算法是最快的)。

请注意,隐藏常量很大程度上取决于实现!

此外,在某些情况下,运行时不是输入大小 n的确定性函数。例如,使用快速排序进行排序:对n个元素的数组进行排序所需的时间不是常量,而是取决于数组的起始配置。

有不同的时间复杂性:

  • 最坏的情况(通常最简单的解决,但并不总是非常有意义)

  • 平均情况(通常更难以弄清楚...)

  • ...

一个很好的介绍是R. Sedgewick和P. Flajolet 的算法分析导论

正如您所说,premature optimisation is the root of all evil并且(如果可能的话)在优化代码时应始终使用分析。它甚至可以帮助您确定算法的复杂性。


查看完整回答
反对 回复 2019-05-24
  • 3 回答
  • 0 关注
  • 1024 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信