您的位置:首页 > 编程语言 > Java开发

java实现全排列

2017-05-27 08:51 204 查看
全排列是一个很简单的数学问题,但是要把它用程序实现,确实要费点思路。思考了一个小时,才用递归实现了它。代码很简单,但是要思考每一步的流程,确实要花费一点时间,再一次证明分治和递归的强大。

package test03;
import java.util.Arrays;
public class test08 {
public static void main(String[] args) {
int [] array={1,2,3};
permutation(array, 0);
}
/* [1, 2, 3]
* [1, 3, 2]
* [2, 1, 3]
* [2, 3, 1]
* [3, 2, 1]
* [3, 1, 2]
1、将当前元素与后面位置的每个元素依此交换
2、交换后取后一个位置的元素为当前元素的位置,再执行1
3、当当前位置是最后一个元素的位置则输出
*/
public static void permutation(int[] array,int start){
if(start==array.length-1){//表示只有一个字符,返回
System.out.println(Arrays.toString(array));
}else{
for(int i=start;i<array.length;i++){
swap(array, start,i);//当前位置元素与后面位置的元素依次替换
permutation(array, start+1);
swap(array,start,i);//将位置换回来,继续做下一个排列
}
}
}
public static void swap(int [] array,int s,int i){
int temp=array[s];
array[s]=array[i];
array[i]=temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: