我们观察规律发现,我们每一位会跟后面的位置进行互换,这样的我们就递归就好.
public class demo {
/**
* @param args
*/
public static void main(String[] args) {
int a[] = {1,2,3,4};
int left = 0;
int right = a.length - 1;
solve(a,left,right);
}
private static void solve(int[] a, int left, int right) {
// TODO Auto-generated method stub
if(left==right){
for(int i = 0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println();
}else{
for(int i = left;i<=right;i++){
swap(a,left,i);
solve(a,left+1,right);
swap(a,left,i);
}
}
}
private static void swap(int[] a, int left, int right) {
int temp = a[left];
a[left] = a[right];
a[right] = temp;
}
}
本文介绍了一个简单的递归算法实现数组的全排列。通过交换数组中元素的位置,递归地生成所有可能的组合,并打印出每一种排列方式。
363

被折叠的 条评论
为什么被折叠?



