给定一个没有重复数字的数列,返回其所有可能的全排列

思路
递归和循环相结合,每次选择一个元素作为首元素,其余元素全排列。
public static void main(String[] args) {
sort();
}
/**
* 给定一个没有重复数字的序列,返回其所有可能的全排列
*/
private static void sort() {
List<Integer> ori = Arrays.asList(1, 2, 3,4,5);
int size = ori.size();
recursive(ori,size);
}
/**
* 递归
*/
private static List<List<Integer>> recursive(List<Integer> ori,int size) {
if (ori.size() == 1) {
List<List<Integer>> res = new ArrayList<>();
res.add(ori);
return res;
}
List<List<Integer>> son = new ArrayList<>();
for (Integer ele : ori) {
List<Integer> copy = new ArrayList<>(ori);
copy.remove(ele);
for (List<Integer> sonList : recursive(copy,size)) {
List<Integer> combine = new ArrayList<>();
combine.add(ele);
combine.addAll(sonList);
son.add(combine);
if (combine.size()==size){
System.out.println(combine);}
}
}
return son;
}
版权声明:本文为hu_jia_neu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。