笔试编程-全排序
对给定数组数据,进行全排序
/**
* 全排列
* @param data
* @param arr
* @param start
* @param end
*/
public static void fullSort(List<Integer[]> data,int[] arr, int start, int end) {
// 递归终止条件
if (start == end) {
Integer[] item = new Integer[end];
for (int i = 0;i<arr.length;i++) {
item[i]=arr[i];
System.out.print(arr[i]);
}
System.out.println();
data.add(item);
return;
}
for (int i = start; i <= end; i++) {
swap(arr, i, start);
fullSort(data,arr, start + 1, end);
swap(arr, i, start);
}
}
private static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}