1、
public class HomeWork01{
/**
* @param args
*/
public static void main(String[] args){
long startTime = System.currentTimeMillis();
String str[] = {"1","2","3", "4", "5","6", "7"};
arrange(str, 0, str.length);
// System.out.println(total);
long endTime = System.currentTimeMillis();
// System.out.println(endTime - startTime);
}
public static int total = 0;
public static void swap(String[] str, int i, int j){
String temp = new String();
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
public static void arrange (String[] str, int st, int len){
if (st == len - 1){
for (int i = 0; i < len; i ++){
System.out.print(str[i]+ " ");
}
System.out.println();
total++;
}
else{
for (int i = st; i < len; i ++){
swap(str, st, i);
arrange(str, st + 1, len);
swap(str, st, i);
}
}
}
}
2、
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class FullPermutation {
private List<List<Integer>> list = new ArrayList<>();
/**
* 不可选重复数字的全排列
* @param ori
* @param preNumber
* @param length
* @return
*/
public List<List<Integer>> getFullPermutation(List<Integer> ori, String preNumber, int length){
if(preNumber.length() == length){
ArrayList<Integer> arrayList = new ArrayList<>();
char[] chars = preNumber.toCharArray();
for(char x : chars){
arrayList.add(Integer.valueOf(Character.toString(x)));
}
list.add(arrayList);
return list;
}
for(int i = 0; i < ori.size(); i++){
LinkedList<Integer> linkedList = new LinkedList<>(ori);
getFullPermutation(linkedList, preNumber + linkedList.remove(i), length);
}
return list;
}
/**
* 数字可以重复选的全排列
* @param ori
* @param preNumber
* @param length
* @return
*/
public List<List<Integer>> getFullPermutation2(List<Integer> ori, String preNumber, int length){
if(preNumber.length() == length){
System.out.println(preNumber);
return list;
}
for(int i = 0; i < ori.size(); i++){
LinkedList<Integer> linkedList = new LinkedList<>(ori);
//与第一个列子的区别在于,第一个参数
getFullPermutation(ori, preNumber + linkedList.remove(i), length);
}
return list;
}
}