易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA获得一个数组的指定长度的排列

import java.util.Stack;

/**
* JAVA获得一个数组的指定长度的排列组合。<br>
*
* @author JAVA世纪网(java2000.net, laozizhu.com)
*/
public class TestSequenceAll {
public static void main(String[] args) {
TestSequenceAll t = new TestSequenceAll();
Object[] arr = { 1, 2, 3 };
// 循环获得每个长度的排列组合
for (int num = 1; num <= arr.length; num++) {
t.getSequence(arr, 0, num);
}
}

// 存储结果的堆栈
private Stack<Object> stack = new Stack<Object>();

/**
* 获得指定数组从指定开始的指定数量的数据组合<br>
*
* @param arr 指定的数组
* @param begin 开始位置
* @param num 获得的数量
*/
public void getSequence(Object[] arr, int begin, int num) {
if (num == 0) {
System.out.println(stack); // 找到一个结果
} else {
// 循环每个可用的元素
for (int i = begin; i < arr.length; i++) {
// 当前位置数据放入结果堆栈
stack.push(arr[i]);
// 将当前数据与起始位置数据交换
swap(arr, begin, i);
// 从下一个位置查找其余的组合
getSequence(arr, begin + 1, num - 1);
// 交换回来
swap(arr, begin, i);
// 去除当前数据
stack.pop();
}
}
}

/**
* 交换2个数组的元素
*
* @param arr 数组
* @param from 位置1
* @param to 位置2
*/
public static void swap(Object[] arr, int from, int to) {
if (from == to) {
return;
}
Object tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
from:http://peterliuye.javaeye.com/blog/364395


相关文档:

JAVA小例子解析算法效率

今天本来想熟悉一下J2SE的内容,不想在编写过程中突然考虑到一个问题,JAVA算法的效率,大家先看我自己写的一个小例子:
public class NumSort {
 public static void mian (String args[]) {
  int a[] = new int[args.length];
  for (int i=0;i<args.length;i++) {
    ......

Java正则表达式入门

众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。
 大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由 ......

java与C

今天没有什么大事,想找java的资料就来到这里了!感觉还是Csdn的资料比较多。
最近换了工作,因为一些原因以前的工作。我以前是做C的,现在因为工作的需要却要做java。
现在大概看了一点java的东东,感觉java的用途很广,也很优秀。但是相比于C却缺少了一些透明度,但也可能正是因为这些透明
才使的它发展到现在吧。java ......

JAVA学习之路

Java程序员到架构师的推荐阅读书籍收藏
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说。用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然&r ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号