全排列的生成算法(八)——序数法
n个元素的全排列有n!个,如果将排列按顺序编号,并能够按照某种方法建立起每一个序号与一个排列之间的对应关系,那么就可以根据序号确定排列,反过来也可以根据排列确定它的序号。根据排列的序号生成对应排列的方法就称为序数法。
通常,我们使用的计数法是十进制数。十进制数的位权是10,也就是逢十进一。另外还有二进制、八进制和十六进制等,它们的位权分别是2、8和16。
排列数与n!的阶乘密切相关,因此可以用一种阶乘进制数来建立排列与它的序号的对应关系。阶乘进制数用0!、1!、2!、……分别作为(从右向左的)第一位、第二位、……的位权,显然这是一种可变的位权。举例来说,一个多位数123,如果是十进制,它的大小是3×100+2×101+1×102=(123)10,就是一百二十三。如果是八进制,就是(123)8=3×80+2×81+1×82=(83)10,就是十进制的83。如果是阶乘进制,它就是3×0