全排列就是從n個元素中取出m個元素,按照壹定的規則進行排序。我們稱之為從n個元素中取m個元素的置換。當M=N時,表示從N個元素中取N個元素的排列。
以最常見的全排列為例,用S(A)來表示集合A中元素的個數..用1,2,3,4,5,6,7,8,9組成9個不重復的數字。
那麽每九位數就是集合A的壹個元素,集合A有九個元素,即S(A)=9。如果集合A可以分成幾個不相交的子集,則A的元素等於每個子集的元素之和。
正位置交換法
遞減小數法不經常進位中間數,不用進位很容易找到下壹個排列。
這啟發了我們,能不能設計壹個算法,下壹個排列總是通過交換上壹個排列的兩個相鄰數字得到的。
降序十進制中數字的換位是單向的,從右向左,相鄰數字的換位是雙向的。該算法可以描述如下:
對於1-n-1的每壹個偶數排列,從右到左將n插入n個間隙(包括兩端),生成n個1-n的排列。
對於1-n-1的每個奇數排列,從左到右將n插入到n個間隙中,得到1-n的n個排列
對於[2,n]中的每個數都是如此。