Java输入数据的无重复全排列
时间: 2024-05-04 07:21:01 浏览: 10
可以使用递归的方式实现输入数据的无重复全排列。具体步骤如下:
1. 定义一个函数,接受一个整数类型的数组作为参数,以及两个整数类型的参数,分别表示要进行全排列的起始位置和结束位置。
2. 如果起始位置等于结束位置,则说明已经排列完成,可以输出数组中的元素。
3. 否则,从起始位置开始循环,依次将每个位置上的元素和起始位置交换,然后递归调用函数,对下一个位置进行全排列。
4. 在递归结束后,将数组恢复原状,以便后续的全排列。
下面是Java代码实现:
```
public static void permute(int[] nums, int start, int end) {
if (start == end) {
for (int num : nums) {
System.out.print(num + " ");
}
System.out.println();
return;
}
for (int i = start; i <= end; i++) {
swap(nums, i, start);
permute(nums, start + 1, end);
swap(nums, i, start);
}
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
```
调用函数时,传入数组以及数组的起始位置和结束位置即可:
```
int[] nums = {1, 2, 3};
permute(nums, 0, nums.length - 1);
```
输出结果如下:
```
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
```