分析
上一篇是全排列的递归解法,现在按照字典序的解法处理:
1,2,3
1,3,2
给出一个数字排列的最小字典序,找到他的下一个字典序, 直到到达最大字典序值
1,2,3->3,2,1 中间的过程即为全排列的过程
字典序含义
从左到右按照位置比较,按照依次增大的顺序排列,例如123,12,21,1,2。的字典序排序后是1,12,123,2,21。
下一个序列
1、从右到左,找到第一个邻位递减的数a
2、找a右边比自己大的,最接近自己的数b
3、交换a,b位置
4、 对b右边的数字从小到大排列,即找到字典序的下一个序列
以数字举例:746532,步骤:
1、找到第一个邻位递减46中的4
2、找到比4大的最小数5
3、交换4,5。即:756432
4、5右边数据排序,即:752346
746532下一个序列就是752346
编码思路
代码及注解
1 | //{1,2,6,5,4,3,0} |
全排列:C2DicOrder.java C3Permutation.java
版权声明:本文为博主原创文章,未经允许不得转载。