面试中被问到数组的全排序问题,被问到也是一脸懵逼。虽然上课时学过此类问题,也没留下态度印象,因此悲剧。这里记录以下代码(5分钟左右),留以后翻看。
public class Permutation {
public static void main(String[] args) {
int a[] = new int[]{1,2,3};
permutation(a, 0);
}
private static void permutation(int a[], int i) {
if(i == a.length - 1) {
System.out.println(Arrays.toString(a));
} else {
for(int j = i ; j < a.length; j++) {
swap(a, j,i);
permutation(a, i+1);
swap(a, j,i);
}
}
}
private static void swap(int[] a, int j, int i) {
if(j == i) {
return;
}
a[i] = a[i] + a[j];
a[j] = a[i] - a[j];
a[i] = a[i] - a[j];
}
}