如何用算法而不是调用ArrayList输出数组元素所有排列组合?
例如输出数组:
int a[]={1,2,3,4,5};
的所有排列组合.
------解决方案--------------------
又是这个啊
public class test{
String[] list;
StringBuffer sb;
int len,start;
test(String in){
len = Integer.parseInt(in);
list = new String[len];
for(int i=0;i <len;i++)
list[i] = String.valueOf(i+1);
printList();
}
void replaceStr(int c1,int c2){
String temp = list[c1];
list[c1] = list[c2];
list[c2] = temp;
}
void printList(){
if(start==len-1){
sb = new StringBuffer();
for(int i=0;i <len;i++)
sb.append(list[i]);
sb.append( " ");
System.out.print(sb);
}else{
for(int i=start;i <len;i++){
replaceStr(start++,i);
printList();
replaceStr(i,--start);
}
}
}
public static void main(String args[]){
new test(args[0]);
}
}