关于java:算法复习4求一组数的全排列

ArrayList<ArrayList<Integer>> res=new ArrayList<>(); //存储最终后果

public void permutation(int[] array) {
        permutation(array,0,array.length-1);
}

public void permutation(int[] array,int start,int end){
        ArrayList<Integer> tempRes=new ArrayList<>(); //存储单个序列
        if(start==end){//终止条件
            for (int i = 0; i < array.length; i++) {
                tempRes.add(array[i]);
            }
            res.add(tempRes);
        }
        for (int i = start; i <= end; i++) {//外围  循环替换start——end的值,产生不同的组合
            swap(array,start,i);
            permutation(array,start+1,end);
            swap(array,start,i);//还原
        }
}

public void swap(int[] array,int left,int right){
        int temp=array[left];
        array[left]=array[right];
        array[right]=temp;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理