Java 数组全排列 递归实现
2014-10-07 11:14
381 查看
最近在做一些常见的面试题,看到有关全排列的算法,所以尝试做了一下。
题目:假如有abc这样一个组合,要求写出全部的三个元素的排列
思路:有abc,acb,bca,bac,cab,cba。
先依次选定每一个元素为第一个元素,对余下的元素进行全排列,即,先选择a(或b,c)作为第一个元素,再对bc(或ac,ab)进行全排列。
method(char[] a , int i)方法需要两个参数,首先数组a就是要进行全排列的数组,我们会直接在a上进行修改,int i是全排列开始的位置,比如我们调用时会调用method(a,0)也就是对整个数组进行全排列。
printArray方法是一个打印出整个数组的辅助方法。
题目:假如有abc这样一个组合,要求写出全部的三个元素的排列
思路:有abc,acb,bca,bac,cab,cba。
先依次选定每一个元素为第一个元素,对余下的元素进行全排列,即,先选择a(或b,c)作为第一个元素,再对bc(或ac,ab)进行全排列。
public static void method(char[] a,int i) { if(i<a.length&&i>=0) { for(int j=i;j<a.length;j++) { char temp=a[i]; a[i]=a[j]; a[j]=temp; method(a, i+1); } } else{ printArray(a);//每得到一种排列,我们就将它打印出来 } } public static void printArray(char[] a) { for(int i=0;i<a.length;i++) { System.out.print(a[i]+","); } System.out.println(""); }
method(char[] a , int i)方法需要两个参数,首先数组a就是要进行全排列的数组,我们会直接在a上进行修改,int i是全排列开始的位置,比如我们调用时会调用method(a,0)也就是对整个数组进行全排列。
printArray方法是一个打印出整个数组的辅助方法。
相关文章推荐
- 通过递归判断一个整形数组是否按升序排列(java实现)
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- 字符串数组元素排列与组合的Java递归实现
- java 递归全排列 (数组,容器两种实现)
- 数组全排列---递归方法实现(java)
- C++库函数next_permutation的递归实现(数组全排列)
- Java实现数组二分查找及递归二分查找
- 排列与组合的Java递归实现 (参考)
- java的递归任务和分治算法实现大数组数据求和
- 使用递归求数组最大值(java实现)
- Java递归实现全排列改进(二)---利用ArrayList实现去重
- Java用递归实现的数组的全排列
- java 全排列 递归实现
- 递归:全排列的java实现
- 排列的Java递归语言实现
- Java递归实现全排列改进(一)---利用HashSet实现去重
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- java实现递归将数组逆序输出
- 用java实现对数组的排列组合
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连