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

46次阅读

共计 563 个字符,预计需要花费 2 分钟才能阅读完成。

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;
}

正文完
 0