首页 > 代码库 > 排列递归
排列递归
递归算法:
/** * 求排列(递归) * @param result 最终排列结果 * @param out 已经排列内容 * @param target 需要排列的数据集合 * @param m 排列元素个数 * * 待解决:1 大数据 溢出 () 2 使用多线程提速排列过程 * * */ public static void f(List<String> result, String out, List<String> target, int m) { if(m == 0) { result.add(out); System.out.println(out); } else { for (int i=0; i<target.size(); i++) { List<String> tem = getSubList(target,i); f(result, out + target.get(i), tem, m-1); } } } /** * 求排除第i个元素的子集 * @param target * @param i * @return */ private static List<String> getSubList(List<String> target, int i) { List<String> temp = new ArrayList<String>(); temp.addAll(target); temp.remove(i); return temp; }
public static void main(String[] args) { List<String> list = new ArrayList<String>(); String[] arr = "1 2 3 4 5 6 7 8 9 0 A B C D E F G".split(" "); Collections.addAll(list, arr); List<String> result = new ArrayList<String>(); int len = arr.length; int m = 17; long timer = System.currentTimeMillis(); f(result, "", list, m); timer = System.currentTimeMillis() - timer; System.out.println("A("+m+","+len+") size="+result.size()+" timer="+timer); }
排列递归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。