全排列算法

原创 2012年03月27日 00:14:46

全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。

当m=n时所有的排列情况叫全排列。

该算法源码如下:

package com.andyidea.algorithms;

/**
 * 全排列算法
 * @author Andy.Chen
 *
 */
public class PermutationSorter<T> {
	
	/**
	 * 全排列输出
	 * @param array 要输出的字符数组
	 * @param from 输出字符数组的起始位置
	 * @param len 输出字符数组的长度
	 */
	public final void permutation(T[] array, int from, int len){
		int i;
		if(from < len-1){
			permutation(array, from+1, len);
			for(i=from+1;i<len;i++){
				swap(array,from,i);
				permutation(array, from+1, len);
				swap(array,from,i);
			}
		}else{
			printResult(array);
		}
	}
	
	/**
	 * 交换算法
	 * @param array
	 * @param from
	 * @param to
	 */
	public final void swap(T[] array,int from,int to){
		T tmp = array[from];
		array[from] = array[to];
		array[to] = tmp;
	}
	
	/**
	 * 打印输出全排列结果
	 * @param array
	 */
	public void printResult(T[] array) {
		for(int j = 0; j < array.length; j++){
			System.out.print(array[j]);
		}
		System.out.println();
	}
	
}

java中全排列的生成算法汇总

全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,   因此在此就以n个数字的排列为例说明排列的生...
  • qfikh
  • qfikh
  • 2016年08月29日 09:41
  • 4367

深度优先算法和广度优先算法

深度优先搜索算法(Depth-First-Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。...
  • zhu339111520
  • zhu339111520
  • 2014年02月28日 03:19
  • 2562

归纳法-生成全排列算法Java实现

数学领域的全排列问题,  从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。《算法设计与技巧分析》这本书...
  • wojiushiwo945you
  • wojiushiwo945you
  • 2016年02月19日 14:11
  • 1641

全排列的生成算法

  • 2013年12月23日 10:19
  • 68KB
  • 下载

全排列(多种算法实现)

  • 2012年10月18日 17:03
  • 35KB
  • 下载

全排列算法解析(完整版)

  • 2017年03月06日 13:44
  • 153KB
  • 下载

java算法分析与设计之全排列问题源代码

  • 2012年11月23日 17:36
  • 886B
  • 下载

彻底理解全排列算法

  • 2017年10月27日 18:19
  • 3KB
  • 下载

全排列算法解析(完整版)

  • 2017年12月01日 10:45
  • 260KB
  • 下载

全排列算法

  • 2013年06月28日 09:49
  • 606KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全排列算法
举报原因:
原因补充:

(最多只允许输入30个字)