字典序排序算法
设有排列(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