给定一个没有重复数字的数列,返回其所有可能的全排列
思路
递归和循环相结合,每次选择一个元素作为首元素,其余元素全排列。
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 ArrayLis