全排列算法题 java
时间: 2023-07-10 15:18:18 浏览: 93
好的,这是一个经典的全排列算法,可以使用递归实现:
```java
public class Permutations {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
permute(nums, 0, nums.length - 1);
}
public static void permute(int[] nums, int l, int r) {
if (l == r) {
// 打印当前排列
for (int num : nums) {
System.out.print(num + " ");
}
System.out.println();
} else {
for (int i = l; i <= r; i++) {
// 交换当前位置和第i个位置的元素
swap(nums, l, i);
// 递归求解第l+1到r个元素的排列
permute(nums, l + 1, r);
// 恢复原始数组
swap(nums, l, i);
}
}
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
```
输出结果为:
```
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
```
阅读全文