全排列

public class Quanpailie {

    /**
     * 全排列的思想,第一位和后面的每一位进行交换,然后递归下一位
     * combinate(int a[],int start,int end)
     * 参数的意思是从第start位开始到end位进行全排列
     * 每次需要把stsrt位与后面的每一位进行交换
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a[]={1,2,3};
        combinate(a,0,a.length);
        
    }
    public static void combinate(int a[],int start,int end){
        if(start==end-1){
            for(int i=0;i<end;i++){
                System.out.print(a[i]);
                
            }
            System.out.println();
            return;
        }
        for(int i=start;i<end;i++){
            swap(a,i,start);
            combinate(a,start+1,end);
            swap(a,i,start);
        }
    }
    public static void swap(int a[],int i,int j){
        int temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }

}

123
132
213
231
321
312

posted @ 2015-07-10 15:33  ~每天进步一点点~  阅读(188)  评论(0编辑  收藏  举报