字典序全排列
2017-07-12 19:03
225 查看
思路:从左向右找到不符合递增规律的第一个数,比如1,2,5,4,3中的这个数就是2,将其与其右面递增序列中的比他大的最小数,比如在前面例子中的3互换,得到1,3,5,4,2,最后,将该数右边的递增序列排序,得到1,3,2,4,5即可。上面这个是求某一个数的下一个排列,而全排列只需按这个思路,将初始数组设置为从小到大排列的数组即可得到排列。
public class 字典序全排列 {
public static int Min(int array[],int index,int num)
{
int low=index;
for(int i=index+1;i<array.length;i++)
{
if(array[low]>array[i]&&array[i]>num)
{
low=i;
}
}
return low;
}
public static void Permutation(int array[])
{
boolean judge=true;
System.out.println(Arrays.toString(array));
while(judge)
{
for(int i=array.length-1;i>=1;i--)
{
if(array[i]>array[i-1])
{
int low=Min(array,i,array[i-1]);
array[i-1]=array[i-1]^array[low];
array[low]=array[low]^array[i-1];
array[i-1]=array[i-1]^array[low];
Arrays.sort(array,i,array.length);
System.out.println(Arrays.toString(array));
break;
}
if(i==1)
{
judge=false;
}
}
}
}
public static void main(String[] args) {
int array[]={1,3,5,7,9};
Permutation(array);
}
}
public class 字典序全排列 {
public static int Min(int array[],int index,int num)
{
int low=index;
for(int i=index+1;i<array.length;i++)
{
if(array[low]>array[i]&&array[i]>num)
{
low=i;
}
}
return low;
}
public static void Permutation(int array[])
{
boolean judge=true;
System.out.println(Arrays.toString(array));
while(judge)
{
for(int i=array.length-1;i>=1;i--)
{
if(array[i]>array[i-1])
{
int low=Min(array,i,array[i-1]);
array[i-1]=array[i-1]^array[low];
array[low]=array[low]^array[i-1];
array[i-1]=array[i-1]^array[low];
Arrays.sort(array,i,array.length);
System.out.println(Arrays.toString(array));
break;
}
if(i==1)
{
judge=false;
}
}
}
}
public static void main(String[] args) {
int array[]={1,3,5,7,9};
Permutation(array);
}
}
相关文章推荐
- 全排列 未按字典序
- 字符串的全排列_字典序排列
- 字典序全排列算法
- 输出n的全排列的字典序编号为k的全排列
- C - Orders 字典序全排列
- 按字典序输出数组内元素的全排列
- 全排列(递归和字典序)
- POJ 1833 排列(字典序全排列、next_permutation()、copy+流迭代器)
- 全排列-字典序
- hdu 1027 字典序全排列
- 字典序序号与全排列的关系【全排列与序号换算方法】
- poj 1731 字典序全排列
- 字典序全排列(java实现)
- 字典序全排列
- 面试:如何找出字符串的字典序全排列的第N种
- 字典序全排列算法研究
- 校OJ 17086 字典序的全排列
- 【CodeForces】96B - Lucky Numbers (easy)(模拟,字典序全排列)
- 字典序全排列
- C++实现全排列(字典序)