在递增进位法中,逆序序列最低位是逢2进1,进位频繁,这是它的一个缺点。排列的逆序序列q0,q1,……,qn-1中记录的是每个排列的元素左边比该元素大的元素个数,如果将它改成记录每个元素右边比该元素小的元素个数,就得到了一个新的序列a0,a1,……,ai,……,an-1,我们称它为中介数序列,它具有与逆序序列相似的性质:
a0=0,0≤a1≤1,0≤a2≤2,……,0≤ai≤i,……0≤an-1≤n-1
很明显,满足这种条件的中介数序列也有n!个,并且它们与集合{1
本文介绍了递减进位法生成全排列的原理和算法,通过中介数序列来生成排列。当n不在排列最左端时,找到n的位置进行交换;当n在最左端时,找到连续递减序列,对序列后的元素进行交换,再删除并反序添加到排列左侧,从而得到下一个排列。提供了一个C++实现示例。
在递增进位法中,逆序序列最低位是逢2进1,进位频繁,这是它的一个缺点。排列的逆序序列q0,q1,……,qn-1中记录的是每个排列的元素左边比该元素大的元素个数,如果将它改成记录每个元素右边比该元素小的元素个数,就得到了一个新的序列a0,a1,……,ai,……,an-1,我们称它为中介数序列,它具有与逆序序列相似的性质:
a0=0,0≤a1≤1,0≤a2≤2,……,0≤ai≤i,……0≤an-1≤n-1
很明显,满足这种条件的中介数序列也有n!个,并且它们与集合{1

被折叠的 条评论
为什么被折叠?