【发布时间】:2021-06-09 01:53:29
【问题描述】:
我正在尝试从 Wikipedia 页面了解 Heap 的算法,我正在尝试将图片与算法进行比较,但我似乎无法弄清楚
这张图片来自维基百科页面
为什么要先切换#1和#2,不应该先切换#1和#4吗?
我使用的是java,但这只是从维基百科复制的代码,我知道一般代码都涉及切换
if k = 1 then
output(A)
else
// Generate permutations with kth unaltered
// Initially k == length(A)
generate(k - 1, A)
// Generate permutations for kth swapped with each k-1 initial
for i := 0; i < k-1; i += 1 do
// Swap choice dependent on parity of k (even or odd)
if k is even then
swap(A[i], A[k-1]) // zero-indexed, the kth is at k-1
else
swap(A[0], A[k-1])
end if
generate(k - 1, A)
end for
end if
k 最初是 4,所以它不会先切换 A[0] 和 A[3] 吗?
如果这是一个愚蠢的问题,请提前道歉......
【问题讨论】:
标签: heaps-algorithm