- 浏览: 553960 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (270)
- Ask chenwq (10)
- JSF (2)
- ExtJS (5)
- Life (19)
- jQuery (5)
- ASP (7)
- JavaScript (5)
- SQL Server (1)
- MySQL (4)
- En (1)
- development tools (14)
- Data mining related (35)
- Hadoop (33)
- Oracle (13)
- To Do (2)
- SSO (2)
- work/study diary (10)
- SOA (6)
- Ubuntu (7)
- J2SE (18)
- NetWorks (1)
- Struts2 (2)
- algorithm (9)
- funny (1)
- BMP (1)
- Paper Reading (2)
- MapReduce (23)
- Weka (3)
- web design (1)
- Data visualisation&R (1)
- Mahout (7)
- Social Recommendation (1)
- statistical methods (1)
- Git&GitHub (1)
- Python (1)
- Linux (1)
最新评论
-
brandNewUser:
楼主你好,问个问题,为什么我写的如下的:JobConf pha ...
Hadoop ChainMap -
Molisa:
Molisa 写道mapred.min.split.size指 ...
Hadoop MapReduce Job性能调优——修改Map和Reduce个数 -
Molisa:
mapred.min.split.size指的是block数, ...
Hadoop MapReduce Job性能调优——修改Map和Reduce个数 -
heyongcs:
请问导入之后,那些错误怎么解决?
Eclipse导入Mahout -
a420144030:
看了你的文章深受启发,想请教你几个问题我的数据都放到hbase ...
Mahout clustering Canopy+K-means 源码分析
1、全排列
package cn.edu.xmu.dm.others; import java.util.ArrayList; /** * 全排列算法 * */ public class Arrange { private int total = 0; private ArrayList<String> arrangeList = new ArrayList<String>(); public Arrange() { } private void swap(String list[], int k, int i) { String c3 = list[k]; list[k] = list[i]; list[i] = c3; } public void perm(String list[], int k, int m) { if (k > m) { StringBuffer sb = new StringBuffer(); for (int i = 0; i <= m; i++) { sb.append(list[i]).append(""); } if (sb.length() > 0) { sb.setLength(sb.length() - 1); } arrangeList.add(sb.toString()); total++; } else { for (int i = k; i <= m; i++) { swap(list, k, i); perm(list, k + 1, m); swap(list, k, i); } } } public int getTotal() { return total; } public ArrayList<String> getArrangeList() { return arrangeList; } public static void main(String args[]) { String list[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; Arrange ts = new Arrange(); ts.perm(list, 0, list.length - 1); for (int i = 0; i < ts.getArrangeList().size(); i++) { // System.out.println(ts.getArrangeList().get(i)); } System.out.println("total:" + ts.total); } }
2、组合
package cn.edu.xmu.dm.others; import java.util.ArrayList; import java.util.BitSet; public class Combination { private ArrayList<String> combList= new ArrayList<String>(); public void mn(String[] array, int n) { int m = array.length; if (m < n) throw new IllegalArgumentException("Error m < n"); BitSet bs = new BitSet(m); for (int i = 0; i < n; i++) { bs.set(i, true); } do { printAll(array, bs); } while (moveNext(bs, m)); } /** * 1、start 第一个true片段的起始位,end截止位 * 2、把第一个true片段都置false * 3、数组从0下标起始到以第一个true片段元素数量减一为下标的位置都置true * 4、把第一个true片段end截止位置true * * @param bs 数组是否显示的标志位 * @param m 数组长度 * @return boolean 是否还有其他组合 */ private boolean moveNext(BitSet bs, int m) { int start = -1; while (start < m) if (bs.get(++start)) break; if (start >= m) return false; int end = start; while (end < m) if (!bs.get(++end)) break; if (end >= m) return false; for (int i = start; i < end; i++) bs.set(i, false); for (int i = 0; i < end - start - 1; i++) bs.set(i); bs.set(end); return true; } /** * 输出生成的组合结果 * * @param array 数组 * @param bs 数组元素是否显示的标志位集合 */ private void printAll(String[] array, BitSet bs) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < array.length; i++) if (bs.get(i)) { sb.append(array[i]).append(','); } sb.setLength(sb.length() - 1); combList.add(sb.toString()); } public ArrayList<String> getCombList() { return combList; } public static void main(String[] args) throws Exception { Combination comb = new Combination(); comb.mn(new String[]{"1","2","3","4","5","6"}, 3); for (int i = 0; i < comb.getCombList().size(); i++) { System.out.println(comb.getCombList().get(i)); String[] list = comb.getCombList().get(i).split(","); Arrange ts = new Arrange(); ts.perm(list, 0, list.length-1); for (int j = 0; j < ts.getArrangeList().size(); j++) { System.out.println("/u0009"+ts.getArrangeList().get(j)); } } } }
发表评论
-
Java 常用正则表达式以及示例
2012-06-19 16:55 860众所周知,在程序开 ... -
Java: Sort a HashMap by its Value
2012-05-29 18:16 796When you use a TreeMap, the ... -
Java 动态代理机制分析及扩展
2012-05-19 23:26 0http://www.ibm.com/developerwor ... -
Java 编程的动态性—— 类、类装入以及反射机制
2012-05-19 23:23 0http://www.ibm.com/developerwor ... -
Java泛型
2012-05-19 23:16 01、Java泛型介绍 ... -
详解Java内存机制(堆与栈)的分配
2012-05-16 10:24 741Java 把内存划分成两种:一种是栈内存,另一种是堆 ... -
BFS解小孩分油问题
2012-04-24 20:45 2296广度优先搜索(Breadth-first Search)算法描 ... -
[转]Java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
2012-04-09 17:34 932DOM(JAXP Crimson解析器) ... -
贪心算法解背包问题
2012-03-27 21:27 6058背包问题:与0-1背包问题类似,所不同的是在选择物品i装 ... -
Java多线程入门
2012-03-02 00:36 1414搞起一个有意思的.. 了解下多线程可以干嘛 第一个多 ... -
sun.misc.BASE64Encoder找不到jar包的解决办法
2012-02-29 18:42 981转自:http://archive.cnblogs.com/a ... -
Java Comparator 对象比较器
2012-02-17 17:39 846package cn.edu.xmu.ru.utils; ... -
Java反编译小工具!
2011-11-08 20:49 731你是否下载到一个jar,发现他的输入和输出不和你心愿,你没法调 ... -
myeclipse 解决内存溢出
2011-11-06 16:14 8551、修改eclipse.ini 在Myeclipse安装目录下 ... -
Java判断字符串是否全由数字组成
2011-10-26 19:19 3168public class RegxUtils { /** ... -
使用StringTokenizer统计文本行单词个数
2011-10-24 16:36 1023StringTokenizer strToke = new S ... -
Java时间戳计算代码执行时间
2011-10-24 09:56 2869import java.util.Calendar; p ... -
Java 常见异常Top 10
2011-10-23 21:25 728NO. 10 java.lang.StackOverf ... -
小技巧:代码中添加以下注解以方便代码的审查
2011-10-23 21:04 1048//TODO 作者名称 (待写入) //XXX 作者名称 ( ... -
遍历HashMap的两种方式比较
2011-10-22 09:41 1013HashMap存储的是键值对,所以一般情况下其遍历 ...
相关推荐
排列组合算法实现,支持模板类。支持重复数的排列。算法采用递归方法,简单易懂。
本资源附带文档解释了排列组合算法的实现和原理。其中排列算法是基于递归实现的,组合算法是基于高效的位移法实现的。代码是使用Java版实现的。
从n个数组中取出所有排列组合(Java实现)
6位数,共有几种排列组合的算法,java实现
Java排列组合_组合算法,利用list及set的无序性, 通过递归实现,不同于以往的排列组合 自娱自乐
排列与组合的Java递归实现.doc
主要为大家详细介绍了JAVA实现abc字符串的排列组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
此外,文档还提供了各种排列组合算法的详细代码示例和实现细节,包括递归和迭代方法。文档还涵盖了高级主题,如如何计算有重复元素的排列组合数量,以及如何优化这些算法的性能。 无论您是Java编程的初学者还是有...
主要为大家详细介绍了Java实现多个数组间的排列组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
无需随机数动态从n个数组中取出所有排列组合(Java实现),效率高
只需改变里面一处数据,就可以根据自己需要,执行输出n个数中取m个数的所有组合。
主要为大家详细介绍了高效的java版排列组合算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
介绍了几种用JAVA实现的排列组合算法,有需要的朋友可以参考一下
主要为大家详细介绍了java实现字符串排列组合问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
所使用的算法应该是效率最高的算法,而且这两个类都只是对需要排列组合的数组的下标进行处理,所以能对任何类型的数组进行排列组合。
主要介绍了Java实现字符数组全排列的方法,涉及Java针对字符数组的遍历及排序算法的实现技巧,需要的朋友可以参考下
我得意之作,采用递归实现。排列组合。希望对大家有用。@TTgdz
该代码实现功能为数学中的C(n,m),n为下标,m为上标。
实现了排列组合算法的类(JAVA),实现了排列组合算法的类(JAVA)
说明:本人前段时间遇到的求n个数组的所有排列组合的问题,发现笛卡尔积算法可以解决,但是网上搜索的只有Java版本的实现,于是自己试着用python实现,由于新手代码不太规范。 代码:本人封装了一个类Cartesian...