字典序排序算法

设有排列(p) =2763541, 按照字典式排序, 它的下一个排列是?

                       (q) =2764135.

(1) 2763541  [找最后一个正序35]

(2) 2763541 [找3后面比3大的最后一个数]

(3) 2764531 [交换3,4的位置]

(4) 2764135 [把4后面的531反序排列为 

     135即得到最后的排列(q)]

l 求(p)=p1¼pi-1pi…pn的下一个排列(q):

(1) 求 i=max{j÷ pj-1<pj }(找最后一个正序)

(2) 求 j=max{k÷ pi-1<pk}(找最后大于pi-1者)

(3) 互换pi-1与pj得 

      p1…pi-2 pj pipi+1¼pj-1 pi-1 pj+1…pn

(4) 反排pj后面的数得到(q):

      p1…pi-2 pj pn¼pj+1pi-1pj-1 ….pi+1 pi

原文地址:https://www.cnblogs.com/xubenben/p/2963951.html