allSort()是很常用的一个函数,是用来求全排列的,学算法之前根本不知道。
// int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; allSort (a, 0, a.length - 1);
Public static void allSort (int[] a, int start, int end) {
if (start > end) {
// 做一些想要的操作
} else {
for (int i = start; i<= end; i++) {
int temp = a[i];
a[i] = a[start];
a[start] = temp;
allSort (a, start +1, end);
temp = a[i];
a[i] = a[start];
a[start] = temp;
}
}
}
ZuHe()函数用于求所有子集,也就是求组合。
// int[] A = new int[100000];
Public static void ZuHe(int[] A, int cur, int n) {
if (cur == n) {
for (int i = 0; i <cur; i++) {
if(A[i] != 0) {
System.out.print(i+ " ");
}
}
System.out.println();
return;
}
A[cur] = 1;
ZuHe (A, cur+1, n);
A[cur] = 0;
ZuHe (A, cur+1, n);
}