用2个嵌套环加速算法的任何方法



我有一个不幸的O(n^3)情况,我可以使用一些建议。在英语中,情况是:打印每个类别名称,然后对于每个类别,抓住与该类别关联的每本书。然后,对于每本书,抓住与该书相关的每个作者和描述。

<c:forEach items="${categories}" var="category">
    <h2>${category.name}</h2>
        <c:forEach items="${category.books}" var="book">
            <h3>${book.title}</h3>
                <c:forEach items="${book.authors}" var="author">
                    <h4>${author.name}</h4>
                </c:forEach>
                <c:forEach items="${book.descriptions}" var="description">
                    <p>${description.description}</p>
                </c:forEach>
        </c:forEach>
</c:forEach>

似乎是按类别获得所有书籍,然后所有的作者和描述都是这样做的唯一方法……但这是不对的。我是算法的新手,并加快了速度,所以我会提供您提供的任何建议。谢谢!

我同意@duffymo,在某些情况下,当您无法降低算法的复杂性时(特别是将输出打印到屏幕上时)。您需要打印所有信息,就算法复杂性而言,没有太大的最佳空间。

如果您必须反复打印出一些东西,例如一本特定的书,则可以进行最佳化 - 您可以简单地通过串联"预估"一个字符串并使用该字符串。这将导致而不是迭代所有,例如每次请求书籍信息时,作者只是为了将准备的字符串打印出来。因此,对于1000个请求,您只需一个周期。

直觉上,类别可能比书籍要少得多,而且描述和作者少得多,因此最大的数据结构就是书籍。由于有多个较小的结构要考虑,因此并不是真正的O(n^3)情况,因此我认为到目前为止不需要太多优化。

相关内容

最新更新