全排列(java版)
2016-03-12 21:02
399 查看
适用于不同数字的全排列,其实也适用于有重复数字的全排列,只不过的出来的结果有重复,需手动删减掉重复的组合。
package testFullPermutation; import java.util.ArrayList; import java.util.List; public class testFullPermutation { ArrayList<ArrayList<Integer>> fullPermutation=new ArrayList<ArrayList<Integer>>(); public ArrayList<ArrayList<Integer>> allSort(int[] buf) { int end=buf.length; if (end==0) { return null; } else { fullPermutation=perm(buf,0,end-1); return fullPermutation; } } public ArrayList<ArrayList<Integer>> perm(int[] buf,int start,int end) { if (start==end)// { ArrayList<Integer> oneKind=new ArrayList<Integer>(); for (int i=0;i<buf.length;i++)//递归终止条件 { oneKind.add(buf[i]); } fullPermutation.add(oneKind); } else { for (int i=start;i<=end;i++) { int temp=buf[start]; buf[start]=buf[i]; buf[i]=temp; perm(buf,start+1,end); //还原成交换之前的组合 temp=buf[start]; buf[start]=buf[i]; buf[i]=temp; } } return fullPermutation; } }
相关文章推荐
- 4000 Java 泛型
- Flatten Binary Tree to Linked List | Java最短代码实现
- 装饰模式
- Java NIO Selector
- 自己动手写struts笔记3
- 自己动手写struts笔记2
- 自己动手写struts笔记1
- Rxjava、retrofit初探
- Java把长整型时间转成字符串日期
- 【JAVA集合】LinkedList
- Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理
- 嵌套类的语法
- java初学之学习 变量数位,数据类型等
- Java敏捷开发
- String 比较
- Java内存管理:深入Java内存区域
- Java类加载与实例化过程
- Java小知识
- SSH学习之一,struts框架入门
- Java NIO Scatter / Gather