【问题标题】:minimize the runtime or the performance time of a code最小化代码的运行时间或执行时间
【发布时间】:2015-04-26 09:41:19
【问题描述】:

我想知道如何最小化以下代码的运行时间

int j = 0;    
while (j < n) {
    int i = 0;    
    while (i < m) {
        cout << i*j;
        i++;
    }
    j++;
}

【问题讨论】:

  • 什么是n和m?是否有任何约束,例如n
  • @Dici - 知道但是...
  • 难道这是一道作业题?到目前为止,您尝试了什么,您使用什么工具来测量运行时间?此外,了解n 的大小也会很有帮助。
  • 我使用在线编译器运行它,它一直给我((运行时错误))...我想知道为什么...它需要 O(n*m) 时间...我可以使用任何编程语言,例如 java 或 c# 等等,问题是为什么它需要超过 5 秒...我如何才能将其最小化.. 不,这不是家庭作业.. 我仍在学习如何构建算法最小时间复杂度
  • any, m 和 n ... 一般来说.. 如果我有两个嵌套的 for 循环或者 while 我怎样才能最小化时间?

标签: performance


【解决方案1】:

没什么可做的,这些只是循环。但是,累积字符串并在末尾打印通常比多次打印细小的字符串更有效。

【讨论】:

  • 我怎么能用单循环做到这一点......我不明白
  • 你不能,无论如何复杂度都是O(n*m)
  • 我想知道我是否将其转换为贪婪编程或记忆化,也许这些方法会使其具有多项式时间,就像在贪婪中它总是需要 O(m+n) 但我不知道如何将其转换为贪心
  • 我告诉了为什么它很慢:打印到控制台比嵌套循环中的单次迭代要慢得多,因此您必须累积结果并在最后打印出来
  • @majdsoud 是的,你可以,但这不是我理解你的问题的方式。这不仅是在改变代码,这是在改变算法
猜你喜欢
  • 2015-01-27
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 2020-02-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多