这个倒序算法主要用到在FFT中,在排序开始时做的奇偶分离用,方便蝶形运算。比如8点FFT结合时的顺序是0,4,2,6,1,5,3,7 ,换成:
0,2,4,6
1,3,5,7
就看出是分成奇偶后分别的前面一半和后面一半的首位结合,其实这就是二进制的倒序加形成的,最开始 000 ,高位加1 得到100,高位再加1就进位了,不过是向低位进位,010. 所以这个算法的思想就是从高位往低位进位,每次从高往低找,直到找到0 就找到了可以加1 的位置,不然还得“进位”,继续往低找。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int array[8]={
0,1,2,3,<