全排列

本文介绍了一种使用递归算法实现全排列的方法,并通过一个具体的Java程序示例展示了如何通过交换数组元素来生成所有可能的排列组合。该程序能够为输入的整数序列生成所有不同的排列。

//递归算法实现全排列,交换方式参考运行实例结果。
public class Prems {
	
	public static void swap(int a, int b){
		int temp = a;
		a = b;
		b = temp;
	}
	public static void swaps(int A[],int k,int n){
		int temp = A[k];
		A[k] = A[n];
		A[n] = temp;
	}
	public static void prem(int A[],int k,int n){
		if(k == 1){
			for(int i = 0;i < n;i++){
				System.out.print(A[i]);
			}
			System.out.println();
		}
		else{
			for(int j = n - k;j < n; j++){
				swaps(A,j,n-k);
				prem(A,k-1,n);
				swaps(A,j,n-k);	
			}
			}
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int A[] = new int[]{1,2,3,4};
		int n = 4;
		int k = 4;
		prem(A,k,n);
	}


}
//1234
//1243
//1324
//1342
//1432
//1423
//2134
//2143
//2314
//2341
//2431
//2413
//3214
//3241
//3124
//3142
//3412
//3421
//4231
//4213
//4321
//4312
//4132
//4123

//http://baike.baidu.com/link?url=7tZ-irAd2l8aqItWnUu4vfdB6E_SmYZKIWu5sVMlFHYv0f_YpZLXH_zl_qyqRgcOTiiMtvJqQNn8bGy33KJhk_百度百科的全排列,可以参考一下
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值