递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
2013-03-22 13:38
211 查看
package temp; /** * 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列 * * @param datas * @param target */ import java.util.Arrays; import java.util.List; import java.util.ArrayList; public class T06 { // 输出 public static void print(List target){ for(Object o: target){ System.out.print(o); } System.out.println(); } // 递归排列 public static void sort(List datas,List target,int n){ if(target.size()==n){ print(target); return; } for(int i=0;i<datas.size();i++){ List newDatas = new ArrayList(datas); List newTarget = new ArrayList(target); newTarget.add(newDatas.get(i)); newDatas.remove(i); sort(newDatas,newTarget,n); } } // 主函数 public static void main(String[] args){ String[] s = {"a","b","c"}; sort(Arrays.asList(s),new ArrayList(),s.length); } }运行结果:
abc acb bac bca cab cba方法二:
public class AllSort{ public static void perm(String[] buf,int start,int end){ if(start==end){//当只要求对数组中一个字母进行全排列时,只要按该数组输出即可 for(int i=0;i<=end;i++){ System.out.print(buf[i]); } System.out.println(); } else{//多个字母全排列 for(int i=start;i<=end;i++){ String 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; } } } public static void main(String[] args) { String buf[]={"a","b","c"}; perm(buf,0,buf.length-1); } }运行结果:
abc acb bac bca cba cab
相关文章推荐
- CSS float的初步理解:用两种不同的方式来实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化
- 用两种不同的方式来实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化
- 用两种不同的方法来实现一个两列布局,其中左侧部分宽度固定、右侧部分宽度随浏览器宽度的变化而自适应变化
- 页面头部和左侧固定并撑满,只有右侧部分内容改变的布局实现
- 假设一个数组A[n]数据均为整形,设计一个O(n)的算法,实现将所有奇数放在数组左侧,所有偶数放在右侧
- 左侧数据移到右侧 select 实现法
- 用两种不同的方式来实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化
- mvp 简单的案例, mvp实现登录及注册 分为moudle数据层 activity视图v层 Presenter逻辑层
- 全排列实现(递归,去重复,字典排序,stl实现)
- 【算法】递归算法实现全排列
- 数据结构:题目(5)找两个字符串的最长公共子串(非递归实现方法)
- 算法题/用递归实现一个字符串的全排列
- 递归实现全排列
- flex osgi实现-potomac 实现页面与页面间数据传递和页面间各部分的数据传递
- 递归思想实现全排列
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第四部分 查询结果集中间n行数据)
- 5行代码 不用递归实现无限分类数据的树形格式化
- 关于全排列的递归算法(Ruby实现)
- 【数据结构基础】前序、中序、后序线索化二叉树(非递归实现)
- 全排列,去重全排列的递归与非递归实现