全排序编程思想:轮流使数组中的元素放于数组的一个位置,并对数组剩余的数组元素进行全排序以形成递归。
方法介绍:
/**
* 数组元素全排序
* 全排列思想:轮流使数组中的元素放于数组的一个位置,并对数组剩余的数组元素进行全排序以形成递归
* @param array 数组
* @param offset 数组全排列的开始位置
* @param isRepeat 是否重复排序
*/
public static List arrange(int[] array, int offset, boolean isRepeat) {
List list = new ArrayList();
if(!isRepeat)
list.add(Arrays.toString(array));
//递归结束条件,即开始全排列的位置为数组最后一个
if(offset == array.length - 1)
return list;
for(int i = offset; i < array.length; i++) {
rotate(array, offset);
list.addAll(arrange(array, offset + 1, i == array.length-1));
}
return list;
}
方法介绍:
/**
* 数组元素全排序
* 全排列思想:轮流使数组中的元素放于数组的一个位置,并对数组剩余的数组元素进行全排序以形成递归
* @param array 数组
* @param offset 数组全排列的开始位置
* @param isRepeat 是否重复排序
*/
public static List arrange(int[] array, int offset, boolean isRepeat) {
List list = new ArrayList();
if(!isRepeat)
list.add(Arrays.toString(array));
//递归结束条件,即开始全排列的位置为数组最后一个
if(offset == array.length - 1)
return list;
for(int i = offset; i < array.length; i++) {
rotate(array, offset);
list.addAll(arrange(array, offset + 1, i == array.length-1));
}
return list;
}