雷德算法实现到位序

Posted 不知姓名的黑猫君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了雷德算法实现到位序相关的知识,希望对你有一定的参考价值。

转自http://blog.csdn.net/corcplusplusorjava/article/details/17119567

使用雷德算法实现倒位序:

        对于自然顺序(二进制)我们是在低位加 1 得到下一位数,对于倒位序我们是在高位加 1 向低位进位。比如已知一个倒位序数是J求其下一个倒位序数,N位总数 ,把J与N/2比较若J<N/2则J的最高位为 0 ,把最高位置 1 ,就得到了J的下一个倒位序数;若J>=N/2则说明J的最高位为1 ,把最高位置0 ,比较次高位,若次高位为0 ,则把次高位置1,得到J的下一个倒位序,若次高位为1  , 则把次高位置0,以此类推...

以N = 8 为例:

倒位数顺序                  倒位数                  十进制

    000                           000                          0

    001                           100                          4

    010                            010                         2

    011                            110                         6

    100                            001                         1

    101                            101                         5

    110                            011                         3

    111                            111                         7

 

我的温馨提示,如果看了该博主的博文还没懂得话,那么自己手动模拟一下就会发现了,其实还挺简单的

以上是关于雷德算法实现到位序的主要内容,如果未能解决你的问题,请参考以下文章

字典序问题 算法实现题1-2

使用Java实现一则算法

❤️算法系列之顺序二叉树的实现(前序遍历中序遍历后序遍历)❤️

[PHP]算法-拼接最小字典序的实现

LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)

二叉树的中序先序后序遍历非递归遍历算法(使用堆栈,用循环实现)