剑指Offer-数组全排列

来源:互联网 发布:php 判断是否刷新页面 编辑:程序博客网 时间:2024/06/13 09:53

1 2 3 4

第一位

  • 1不动      1 -》2 3 4的全排
  • 1,2置换   2-》1 3 4的全排
  • 1,3置换   3-》2 1 4的全排
  • 1,4置换   4-》2 3 1的全排

第二位,第三位。。依次类推

注意每次换回去要再换回来

import java.util.Arrays;//数组全排列 Evan XU-TJUclass AllSort{    public static void main(String[] args) {        int array[] = {1, 2, 3,4};        allSort(array,0,array.length-1);    }    public static void allSort(int array[],int start,int end){        if (start>=end){            //ToDo            System.out.println(Arrays.toString(array));            return;        }        allSort(array,start+1,end); //保持不动        for (int i = start+1; i <=end ; i++) {            swap(array, start, i);  //分别交换            allSort(array,start+1,end); //后面的继续排列            swap(array,start,i);    //交换再换回来        }    }    public static void swap(int array[],int i,int j){        int tmp = array[i];        array[i] = array[j];        array[j]=tmp;    }}

[1, 2, 3, 4][1, 2, 4, 3][1, 3, 2, 4][1, 3, 4, 2][1, 4, 3, 2][1, 4, 2, 3][2, 1, 3, 4][2, 1, 4, 3][2, 3, 1, 4][2, 3, 4, 1][2, 4, 3, 1][2, 4, 1, 3][3, 2, 1, 4][3, 2, 4, 1][3, 1, 2, 4][3, 1, 4, 2][3, 4, 1, 2][3, 4, 2, 1][4, 2, 3, 1][4, 2, 1, 3][4, 3, 2, 1][4, 3, 1, 2][4, 1, 3, 2][4, 1, 2, 3]


运行结果:


原创粉丝点击