全排列算法

来源:互联网 发布:免费x站 最新域名网站 编辑:程序博客网 时间:2024/06/08 00:50

1.递归全排列

分别将每个位置交换到最前面位,之后全排列剩下的位。

递归全排列 1 2 3 4 5    1,for循环将每个位置的数据交换到第一位            swap(1,1~5)    2,按相同的方式全排列剩余的位


2.字典序全排列算法

对给定的字符集中的字符规定了一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后。

【例】 一般而言,设P是[1,n]的一个全排列。
      P=P1P2…Pn=P1P2…Pj-1PjPj+1…Pk-1PkPk+1…Pn
    find:  j=max{i|Pi<Pi+1}
        k=max{i|Pi>Pj}
      1,  对换Pj,Pk,
      2,  将Pj+1…Pk-1PjPk+1…Pn翻转
          P’= P1P2…Pj-1PkPn…Pk+1PjPk-1…Pj+1即P的下一个

字典序全排列以[1,2,…,n]为起点,以[n,n-1,..,2,1]为终点。

0 0
原创粉丝点击