如何用算法而不是调用ArrayList输出数组元素所有排列组合?
例如输出数组:
int a[]={1,2,3,4,5};
的所有排列组合.

解决方案 »

  1.   

    又是这个啊
    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]);
      }
    }