全排列 算法题 java
时间: 2023-07-10 21:19:56 浏览: 96
以下是一个使用递归实现的全排列算法(Java语言):
```java
public static void permute(int[] nums, int start) {
if (start == nums.length) {
// 打印当前排列
System.out.println(Arrays.toString(nums));
return;
}
for (int i = start; i < nums.length; i++) {
// 交换当前元素与起始元素
int temp = nums[start];
nums[start] = nums[i];
nums[i] = temp;
// 递归生成下一个元素的排列
permute(nums, start + 1);
// 恢复当前排列
temp = nums[start];
nums[start] = nums[i];
nums[i] = temp;
}
}
```
该算法的思路是,从数组的第一个元素开始,依次与后面的元素进行交换,再递归生成下一个元素的排列。当到达数组的最后一个元素时,就打印当前的排列。在递归返回时,需要恢复当前排列,以便生成下一个排列。
例如,对于数组 `{1, 2, 3}`,可以调用 `permute(nums, 0)` 来生成所有排列。输出结果为:
```
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
```
阅读全文