【问题标题】:java simplify and run code more efficientlyjava简化和更有效地运行代码
【发布时间】:2021-10-13 07:47:45
【问题描述】:

我最近意识到了面向对象编程的强大功能,但不知道如何使用嵌套循环(我读过它是不好的编程习惯)来解决这个问题,这需要很长时间才能执行并且效率低下。我只想通读苹果、橙子和西红柿等物体。每个对象都有一个价格向量。我的主要课程将简单地遍历所有矢量价格并尝试找到低于 1,000 美元的组合。这将需要三个 for 循环。我还没有写的真正的程序会有 10 个嵌套循环。

【问题讨论】:

  • 一种替代方法是使用递归函数调用。我发现如果您有任意数量的嵌套外观几乎在做同样的事情(即循环遍历目录结构的多个级别),这将非常有用。
  • 感谢您的帮助和建议。我将不得不回顾我的一些编程书籍,因为我已经很久没有使用递归函数了。我的电脑使用 5960x 处理器,我认为它仍然非常强大。我认为我的程序需要几个月的时间才能在我的计算机上使用 10 个嵌套的 for 循环来执行;这包括使用多线程。
  • 循环遍历按产品索引的数组数量。不是真正的面向对象。它的难点是智能递增。您可以先用笔和纸手动尝试哪个谜题。

标签: java performance nested-loops


【解决方案1】:

并不总是嵌套循环是一种不好的编程习惯。例如,考虑一个具有 10x10 单元板的游戏。每个单元存储一个信息。如果您需要计算所有具有特定值的单元格,则可能需要进行嵌套循环,这不是一个坏习惯,而且效率也不是很低,因为您需要一种方法来检查所有 100 个现有单元格(可以循环的 10x10为 10 行,每行 10 个单元格,带有 2 级嵌套循环)。

在您的情况下,如果您有 3 个价格列表,并且您希望找到所有可能的价格组合,以便您的资金不超过 1,000 美元,则需要执行嵌套循环。 可以限制检查的数量,例如对价格进行排序,但代码阅读起来会复杂得多。如果您不必处理特殊的性能问题,拥有干净的代码比拥有更高性能的代码更好。因此,在知道您需要更高性能的代码之前,不要花时间尝试拥有更高性能的代码。请记住,80% 的执行时间花在不到 20% 的代码上

请考虑,只有当您需要找到 1 个苹果、1 个橙子和 1 个番茄的组合时,才可能使用 3 个嵌套循环。如果您还需要其他组合(例如 4 个苹果和 2 个橙子和 0 个西红柿),算法将变得非常复杂,并且无法仅使用 3 个嵌套循环来处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多