Algorithm 阶乘时间复杂度算法是否需要递归或堆栈?
我有一套元素。我需要生成这些元素的所有排列 我使用的算法的时间复杂度是O(n!),它是基于递归的。自然地,每个递归算法都可以使用无限循环和堆栈转换为非递归算法 是否可以在不使用递归或堆栈+循环等价的情况下生成所有置换?答案 阶乘时间复杂度算法是否需要递归或堆栈 一般来说是没有的,琐碎的。以一个代码为例,它简单地遍历从1到n的所有数字!: 至于 是否可以在不使用递归或堆栈+循环等价的情况下生成所有置换 答案是肯定的,你可以找到答案。根据您希望生成的顺序,有几种不同的VRA可用。以下是第一个答案中的一个示例: 从最右边的数字开始,向左移动一个位置,直到看到一个比相邻数字小的数字。然后将值中下一个数字放在那里,然后按递增顺序排列所有剩余的数字。这样做,直到没有更多的事情要做。稍微考虑一下,你就可以按照线性时间对数字进行排序 如前所述:Algorithm 阶乘时间复杂度算法是否需要递归或堆栈?,algorithm,recursion,big-o,time-complexity,Algorithm,Recursion,Big O,Time Complexity,我有一套元素。我需要生成这些元素的所有排列 我使用的算法的时间复杂度是O(n!),它是基于递归的。自然地,每个递归算法都可以使用无限循环和堆栈转换为非递归算法 是否可以在不使用递归或堆栈+循环等价的情况下生成所有置换?答案 阶乘时间复杂度算法是否需要递归或堆栈 一般来说是没有的,琐碎的。以一个代码为例,它简单地遍历从1到n的所有数字!: 至于 是否可以在不使用递归或堆栈+循环等价的情况下生成所有置换 答案是肯定的,你可以找到答案。根据您希望生成的顺序,有几种不同的VRA可用。以下是第一个答案中的
不,对于阶乘时间复杂度算法,递归和堆栈不是必需的 但当我读到你的帖子时,你似乎想问 有可能比O(n!)更快地生成n个元素的所有置换吗 答案也是:不
因为有n!n个元素的不同排列,每一个保存、显示或做任何事情的算法!置换,至少需要O(n!)时间。这包括置换的生成。对于“阶乘时间复杂度算法是否需要递归或堆栈”的回答通常是否定的。例如,一个代码只需迭代从1到n的所有数字即可!。至于“是否有可能在不使用递归或堆栈+循环等价的情况下生成所有置换?”您可以找到答案。@Rufflewind这可能是一个答案,没有评论:)@AdamStelmaszczyk:我是,但我觉得这个问题可能被认为与我已经链接的问题重复。@Rufflewind发布这样的问题的答案还是可以的。在这种情况下,我认为这不是重复,这里的问题与“如何有效地生成链表的所有可能排列?”不同。
for i from 1 to factorial(n):
play("ni.mp3")