java no next_permutation () function, you need to write your own.
import java.util.*;
public class Main {
static Scanner sc = new Scanner(System.in);
static int a[] = new int[15];
// 交换函数
static void swap(int x, int y) {
int tmp = a[x];
a[x] = a[y];
a[y] = tmp;
}
// 求全排列
static void permutation(int begin, int end) {
if(begin > end) {
for(int i = 1; i <= end; i++)
System.out.print(a[i]);
System.out.println();
return ;
}
for(int i = begin; i <= end; i++) {
swap(begin, i);
permutation(begin + 1, end);
swap(begin, i);
}
}
// 将[begin, end]范围内的数按升序排列
static void reverse(int begin, int end) {
while(begin < end) {
swap(begin, end);
begin++;
end--;
}
}
// 寻找下一个比当前序列大的序列
static boolean next_permutation(int begin, int end) {
int i = end;
while(i > begin && a[i - 1] >= a[i]) i--;
if(i == begin) return false;
i--;
int j = end;
while(j > i && a[j] <= a[i]) j--;
swap(i, j);
reverse(i + 1, end);
return true;
}
public static void main(String[] args) {
int n;
n = sc.nextInt();
for(int i = 1; i <= n; i++)
a[i] = sc.nextInt();
do {
for(int i = 1; i <= n; i++)
System.out.print(a[i]);
System.out.println();
} while (next_permutation(1, n));
System.out.println("全排列如下:");
Arrays.sort(a, 1, n + 1);
permutation(1, n);
}
}