java 实现全排列
2015-09-08 14:05
483 查看
听到同学的说的一个面试题-实现12345的全排列,这道题目的解法和迷宫类似,通过递归回溯实现,下面是小弟的实现方法。
另外一种解法
思路:每次从后面选出一个和第一个交换,后面的继续全排列,一次类推
public static void main(String[] args){ int [] data={1,2,3,4,5}; boolean[] b=new boolean[data.length]; quanpailie(data, b, 0,""); } //递归实现 public static void quanpailie(int [] data,boolean[] b,int level,String str) { if(level==data.length) { System.out.println(str); return; } for(int i=0;i<data.length;i++) { if(!b[i]) { b[i]=true; quanpailie(data, b, level+1, str+data[i]); b[i]=false; } } }
另外一种解法
思路:每次从后面选出一个和第一个交换,后面的继续全排列,一次类推
public static void fullPermutation(int[] array,int start,int end) { if(start==end)//递归结束 { System.out.println(Arrays.toString(array)); } for(int i=start;i<=end;i++)//递归体 { swap(array, start, i); fullPermutation(array, start+1, end); swap(array, start, i); } } public static void swap(int[]array,int i,int j) { int temp=array[i]; array[i]=array[j]; array[j]=temp; }
相关文章推荐
- eclipse快捷键大全
- spring mvc上传下载
- Struts2之—实现自己的结果集的定义ajax
- JavaIDL开发CORBA实例演示
- spring_150801_autowired_qualifier
- Java NIO原理和使用
- Java NIO原理 图文分析及代码实现
- java学习笔记内部类总结
- hdu-5429(大数java练习)
- javascritpt 原型链
- eclipse config 3 构造pydev
- spring 标签
- Java-Java环境的配置
- Java实现数组按数值大小排序
- Java性能优化(12):最小化类和成员可访问能力
- 处理 MD5 的经验和坑
- spring-data-jpa中findOne与getOne的区别
- Java代码块执行顺序
- swagger springMVC,配置
- MyEclipse快捷键大全