编程/编码时渐近时间复杂度的意义?

时间:2015-10-18 06:18:40

标签: algorithm time-complexity code-generation

我听过很多关于时间复杂性的事情。时间复杂度本身就是一个Aproximation,因为我们关注的是Worstcase(Big-Oh),Bestcase(Big-Omega)和Average(Theta)。

每种编程语言都包含许多内置函数。我真的不知道是否有办法检查这些函数的时间复杂度。 因为我们正在使用buit-in-functions,

  

我们真的需要考虑Time complexity while coding吗?   太空复杂性怎么样?

     

有没有办法检查这些功能的时间复杂性。   既然我们正在使用buit-in-functions?

2 个答案:

答案 0 :(得分:4)

  

我们是否真的需要在编码时考虑时间复杂度?

如果您的应用需要能够扩展到更大的问题,那么是的。否则没有。

  

空间复杂度怎么样?

答案相同。

  

有没有办法检查这些功能的时间复杂性。既然我们使用内置函数?

  1. 阅读文档。标准类的方法的复杂性经常被记录下来。

  2. 使用您的算法知识。例如,您应该在CS课程的算法单元中教授排序为O(NlogN)的体面排序算法,或者列表中的元素平均为O(N)。 (如果你没有采用算法,那就有很多优秀的教科书......)

  3. 检查并在必要时分析内置函数的源代码。

  4. (注意:我不推荐估算复杂性的经验和方法。它可能会给你错误的答案......甚至忽略测量方法的标准问题。)

答案 1 :(得分:1)

  

有没有办法检查这些功能的时间复杂性。既然我们使用内置函数?

是。
最常见的方法是使用定时器(前后时间戳,秒表等)循环运行(10,000 - 10,000,000次,具体取决于功能,软件,定时器的精度等),然后将其与其他进行比较选项。

修改
您需要使用许多不同的输入大小,并注意缓存对测量的潜在混淆效果。