您的位置:首页 > 编程语言 > Java开发

Java 数组全排列 递归实现

2014-10-07 11:14 381 查看
最近在做一些常见的面试题,看到有关全排列的算法,所以尝试做了一下。

题目:假如有abc这样一个组合,要求写出全部的三个元素的排列

思路:有abc,acb,bca,bac,cab,cba。

先依次选定每一个元素为第一个元素,对余下的元素进行全排列,即,先选择a(或b,c)作为第一个元素,再对bc(或ac,ab)进行全排列。

public static void method(char[] a,int i)
{
if(i<a.length&&i>=0)
{
for(int j=i;j<a.length;j++)
{
char temp=a[i];
a[i]=a[j];
a[j]=temp;
method(a, i+1);
}
}
else{
printArray(a);//每得到一种排列,我们就将它打印出来
}

}
public static void printArray(char[] a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+",");
}
System.out.println("");
}


method(char[] a , int i)方法需要两个参数,首先数组a就是要进行全排列的数组,我们会直接在a上进行修改,int i是全排列开始的位置,比如我们调用时会调用method(a,0)也就是对整个数组进行全排列。

printArray方法是一个打印出整个数组的辅助方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: