全排列算法

该博客详细展示了如何使用Java实现整数数组的全排列算法,通过递归交换元素实现所有可能的排列组合。示例中,用户输入三个不重复的元素1、2、3,程序成功输出了所有6种排列,并统计了排列总数。此算法适用于需要遍历所有可能顺序的场景。
摘要由CSDN通过智能技术生成

将多个不相同的元素进行全排列

代码如下:(这里以整形为例)

import java.util.Scanner;

public class 全排列算法 {
	
	private static int count = 0;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入要排列元素的个数:");
		int n = sc.nextInt();
		System.out.print("请输入相应的元素:");
		int[] arr = new int[n];
		for (int i = 0; i < n; i++) {
			//输入的元素不允许重复
			arr[i] = sc.nextInt();
		}
		System.out.println("其所有的排列组合为:");
		fun(arr, 0);
		System.out.println("共有"+count+"种排列方法");
	}
	public static void fun(int[] arr, int k) {
		if (k == arr.length) {
			for (int i : arr) {
				System.out.print(i);
			}
			System.out.println();
			count++;
			return;
		} else {
			int temp;
			for (int i = k; i < arr.length; i++) {
				temp = arr[i];
				arr[i] = arr[k];
				arr[k] = temp;
				fun(arr, k+1);
				temp = arr[i];
				arr[i] = arr[k];
				arr[k] = temp;
			}
		}
	}

}

运行结果:

请输入要排列元素的个数:3
请输入相应的元素:1 2 3
其所有的排列组合为:
123
132
213
231
321
312
共有6种排列方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值