java实现全排列
2015-08-18 17:56
525 查看
package bin.main; /**java实现全排列 * * 时间复杂度:O(n^n) * 空间:O(n) * * * @author 牵手无奈 * date:2015-8-18 * */ public class Main1 { /** * 统计全排列的数量 */ public static int count=0; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] array = {1,2,3,4,5}; prepare(array); } /**进行准备工作 * @param array */ public static void prepare(int[] array){ int[] temp = new int[array.length];//用来保存产生每一个组合 boolean[] selected = new boolean[array.length];//用来保存标注哪些数据已经被选中了 fullArray(array, temp, selected, 0); System.out.println("count="+count); } /**核心函数,递归算法 * @param array * @param temp * @param selected * @param index */ public static void fullArray(int[] array,int[] temp,boolean[] selected,int index){ if(index==array.length){//当全部元素都选了,就输出 printArray(temp); count ++; } for(int i=0;i<array.length;i++){//如果还有元素没有选,则选择剩下的元素 if(!selected[i]){//选择剩下没有被选过的元素 selected[i]=true;//选中后,标记为已选 temp[index]=array[i];//把选中的元素加到临时数据里 fullArray(array, temp, selected, ++index);//递归调用 --index; selected[i]=false; } } } /**辅助函数,用来打印数组 * @param array */ public static void printArray(int[] array){ for(int i:array){ System.out.print(i+" "); } System.out.println(); } }
相关文章推荐
- java 观察者模式
- Java Web 防范 SQL 注入攻击
- java:栈操作(数组结构 + 链表结构)
- Spring 入门教程(二) 生命周期和作用域
- 动态代理应用场景 Java
- 拓扑排序 之 Java详解
- [leetcode-140]word breakII(java)
- java-url访问web工程
- java 中的重载与重写 抽象类与接口的区别
- Java基础知识—内部类
- JAVA反射机制的几种实现
- Java 继承
- java,c#将秒转换为hh:MM:ss的实现
- Java EE_学习规划
- Java之Exception
- Unsupported major.minor version 51.0解决
- MyEclipse查看Struts2源码及Javadoc文档
- Spring事务管理只对出现运行期异常进行回滚
- java常见连接池比较
- Spring代理模式