雷德(Rader)算法

news/2024/11/14 13:52:27/
对于N个数,我们把递增自然数(0、1、2、3、……、N)称为顺序数列;对顺序数列中的每一个数,将其二进制倒序后转化为十进制,称为倒叙数列。

下面,以N=8举例,
顺序序列为:
01234567。
顺序序列的二进制序列为:
000,001,010,011,100,101,110,111
对顺序序列的二进制序列每一个元素倒叙:

000,100,010,110,001,101,011,111

对上一序列的每一个元素求十进制,即为倒位叙列:

0,4,2,6,1,5,3,7


更直观的展示:

倒位序列 -----------顺序序列          
0(000)----------- 0(000)                                      
4(100)----------- 1(001)                                      
2 (010)----------- 2(010)                                    
6 (110)----------- 3(011)                                  
1 (001)----------- 4(100)                                       
5 (101)----------- 5(101)                                        
3 (011)----------- 6(110)                                        
7 (111)------------7 (111)   


可以发现,顺序序列的二进制序列,其下一个数是上一个数最低位加1并由低位向高位进位得到,而倒位序列的二进制序列,其下一个数是上一个数在最高位加1并由高位向低位进为而得到的。
 
算法描述:在N个数中,若已知某数的倒序数是J,求下一个倒序数,应先判断J的最高位是否为0,与k=N/2进行比较即可得到结果。如果k>J,说明最高位为0,应把其变成1,即J+N/2,这样就得到倒序数了。如果k<=J,即J的最高位为1,将最高位置为0,即J-N/2,再判断次高位;与k=N/4进行比较,若为0,将其变位1,即J+N/4,即得到倒序数,如果次高位为1,将其化为0,再判断下一位......

#include <iostream>
#include <cstdio>
using namespace  std;int x[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int y[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int N = 8;int main()
{int i,j,k;int temp;for(j=0,i=0;i<N-1;i++)    //这里实现了奇偶前后分开排序{if(i<j)                        //如果i<j,即进行变址{temp = x[j];x[j]  = x[i];x[i]  = temp;}k = N/2;                 //求j的下一个倒位序while(j >= k)        //如果k<=j,表示j的最高位为1{j = j-k;                 //把最高位变成0k = k/2;               //k/2,比较次高位,依次类推,逐个比较,直到某个位为0}j = j+k;                //把0改为}//for()for(i = 0 ; i < N ; ++ i){printf("%2d      %2d\n" , i , x[i]) ;}return 0 ;
}

                         



http://www.ppmy.cn/news/225554.html

相关文章

雷达气象方程

一、单一目标的雷达气象方程 1. 各向同性的天线&#xff0c;假设雷达发射功率为 则在距离其为R处的能流密度为&#xff1a; 2. 实际的天线具有定向功能,可以将能量汇聚在一个狭窄的波束内 定向天线最大发射方向的能流密度与各向均匀辐射天线的能流密度之比&#xff0c;定义为…

雷德算法

使用雷德算法实现倒位序&#xff1a; 对于自然顺序&#xff08;二进制&#xff09;我们是在低位加 1 得到下一位数&#xff0c;对于倒位序我们是在高位加 1 向低位进位。比如已知一个倒位序数是J求其下一个倒位序数&#xff0c;N位总数 &#xff0c;把J与N/2比较若J<N/2则J的…

弗雷德的困惑

题目描述 弗雷德先生想在路易斯安娜州买一块地造房子。 在调查中&#xff0c;他了解到由于密西西比河的侵蚀&#xff0c;路易斯安娜州正在以每年 50 平方英里的速度变小。因为弗雷德先生希望在他的新房子里生活直至终老&#xff0c;所以他想知道他的房子是否会被侵蚀掉。 经过进…

转:管理大师曼弗雷德:不关注员工的动机需求,何谈高绩效组织?

个人理解&#xff1a;求同存异&#xff0c;超越需求本身&#xff0c;回到人性起点。 忠诚度、信任感和协作精神 领导者只有关注并迎合追随者&#xff08;不管国籍和文化背景如何&#xff09;的普遍动机需求&#xff0c;全球组织才能&#xff08;像其他任何组织一样&#xff09;…

转:曼弗雷德:组织文化是打造高绩效组织的凝结剂

个人理解&#xff1a; 组织文化构成了组织的特色和身份&#xff0c;它包含组织参与者的所有价值观、信念、态度、规范和行为。 组织成员共有的、用于应对内外部压力的信念、价值观和典型行为模式的基本假定。 组织文化与员工价值观的匹配 “组织”&#xff0c;具体表达为“组织…

转:曼弗雷德:你的不安全感,是如何摧毁掉公司的?

个人理解&#xff1a; 一流人才雇用一流人才&#xff1b;二流人才雇用三流人才。 不安全感 &#xff0c;害怕自己被超越甚至被替代的不安全感。 -- 你有那样宽广的胸怀吗&#xff1f; 用错人是摧毁一家公司的最“有效”的方式。 在进取的A类员工与稳固的B类员工之间取得一种平衡…

转:曼弗雷德:要理解内心舞台,人很容易让阴暗面主宰

个人理解&#xff1a;自我认知至关重要 对自己有所认知&#xff0c;理解自己的内心舞台&#xff0c;不能忽视内心的阴暗面 人们不是理性决策者&#xff0c;很多其他因素在起作用。大部分行为不是真正理性的。在情境之中看待事物。看人的时候&#xff0c;要看其家庭背景、文化背…

elasticsearch集群搭建错误记录

持续更新中 错误记录&#xff1a; 1&#xff1a;BindHttpException[Failed to bind to 192.168.80.129:9200]; nested: BindException[Address already in use]; Likely root cause: java.net.BindException: Address already in use。 关闭es9200端口&#xff0c;重新启动 …