我试图理解这个位反转算法。我找到了很多资料,但它并没有真正解释伪代码是如何工作的。例如,我从http://www.briangough.com/fftalgorithms.pdf找到了下面的伪代码
\n\nfor i = 0 ... n \xe2\x88\x92 2 do\n k = n/2\n if i < j then\n swap g(i) and g(j)\n end if\n while k \xe2\x89\xa4 j do\n j \xe2\x87\x90 j \xe2\x88\x92 k\n k \xe2\x87\x90 k/2\n end while\n j \xe2\x87\x90 j + k\nend for\nRun Code Online (Sandbox Code Playgroud)\n\n从这个伪代码来看,我不明白你为什么要这么做
\n\nswap g(i) and g(j)
当if声明是true.
另外:while循环有什么作用?如果有人可以向我解释这个伪代码,那就太好了。
下面是我在网上找到的c++代码。
\n\nvoid four1(double data[], int nn, int isign)\n{\n int n, mmax, m, j, …Run Code Online (Sandbox Code Playgroud)