`
yuyeyi
  • 浏览: 38123 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

全排列2

阅读更多
package com.syj.csdn;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * <p>
 * Title:全排列算法
 * </p>
 *
 * <p>
 * Copyright: http://blog.csdn.net/sunyujia/
 * </p>
 *
 * @author 孙钰佳
 * @main sunyujia@yahoo.cn
 * @date 2009-04-25 23:57:23 PM
 */
public class FullSort {
	//将NUM设置为待排列数组的长度即实现全排列
	private static int NUM = 3;

	/**
	 * 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
	 *
	 * @param datas
	 * @param target
	 */
	private static void sort(List datas, List target) {
		if (target.size() == NUM) {
			for (Object obj : target)
				System.out.print(obj);
			System.out.println();
			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);
		}
	}

	public static void main(String[] args) {
		String[] datas = new String[] { "a", "b", "c", "d" };
		sort(Arrays.asList(datas), new ArrayList());
	}

}

原文网址:http://blog.csdn.net/sunyujia/archive/2009/04/26/4124011.aspx

分享到:
评论

相关推荐

    递归实现元素全排列2.html

    递归实现元素全排列

    寒假40.全排列2_全排列_40_

    全排列2.cpp` 文件应该包含了这个算法的完整实现,并且`寒假40.全排列2.exe` 是编译后的可执行程序,可以直接运行以测试和验证算法的正确性。通过运行这个程序,你可以得到1到n的所有可能排列,这对于理解和学习...

    全排列代码,C语言代码,用来解决全排列问题

    全排列代码,C语言代码,用来解决全排列问题,csc 认证

    排列里面的全排列,全排列,全排列

    用C++语言写的全排列,有助于理解递归,全排列,全排列,全排列,全排列

    全排列算法C语言超简洁

    自己写的基于字符的全排列算法,代码简洁,高效,7位数的全排列都是秒排!用到了广度优先排列,深度优先搜索和几个递归,唯一没完成的是退出时释放内存,呵呵,破解密码时超有用的哟,,

    生成全排列矩阵.zip

    例如,对于数字序列1, 2, 3,其全排列包括(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2)和(3, 2, 1)。在MATLAB中,生成全排列矩阵的算法通常涉及递归或回溯方法。 MATLAB是一种强大的数值计算和符号计算...

    Java实现字符数组全排列的方法

    在Java编程中,全排列是一个常见的问题,它涉及到算法和数据结构的知识。全排列是指从给定的字符数组中,按照一定的顺序生成所有可能的排列组合。这个问题通常使用回溯法来解决,因为它能够有效地避免重复的排列。...

    一种计算全排列的简易算法

    2. **回溯**:当递归到某一步发现无法继续生成新的排列时,需要回溯到上一步,尝试选择不同的元素。 3. **剪枝**:为了提高效率,可以通过剪枝技术避免不必要的计算,比如记录已使用过的元素,防止重复。 4. **...

    c++编写的全排列源代码

    例如,对于集合{1,2,3},其全排列有6种:(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。 ### C++全排列源代码分析 #### 1. **程序结构** 程序首先包含了必要的头文件`"stdafx.h"`和`"iostream.h"`,这...

    局部搜索解决全排列问题

    对于2x2矩阵,全排列组合生成的下标对应于矩阵的不同行和列元素,然后比较这些组合的和,找到最小值。随着矩阵大小的增加,这种方法的计算量同样会迅速增长。 总结,局部搜索在全排列问题中的应用主要体现在使用...

    C/C++全排列

    std::vector&lt;int&gt; nums = {1, 2, 3}; permute(nums, 0); return 0; } ``` 在这个代码中,`permute`函数接收一个整数向量`nums`和一个起始索引`start`。当`start`等于`nums.size()`减1时,表示已经到达数组末尾,...

    c# n的全排列

    2. 回溯法的基本原理和在全排列问题中的应用。 3. C#语言的递归编程技巧。 4. 数组操作和列表(List)的使用。 5. 性能优化策略,如迭代实现、生成器函数和分块处理。 理解并掌握这些知识点,可以帮助开发者解决...

    计算方法习题 适合学生习题参考 设R=(1, 2, .., n),计算R的全排列。

    /*设R=(1, 2, .., n),计算R的全排列。 分治法求解全排列的算法思想: 设R=(1, 2, .., n)的全排列为P(R), 若R=(),则P()=(); 否则,P(R)={(1)P(2, 3, .., n),(2)P(1, 3, .., n), (3)P(2, 1, .., n), .., (n)...

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为 例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列...

    CC++全排列..1--n的全排列以及字符串的全排列

    CC++全排列算法详解 在计算机科学中,全排列是一个非常重要的概念,它指的是将一个集合中的元素按照一定的顺序排列出来的所有可能的排列方式。在这个文件中,我们将讨论CC++中生成从1到n的全排列算法,以及字符串的...

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

    例如,序列{1, 2, 3}的全排列按字典序排列为{1, 2, 3}、{1, 3, 2}、{2, 1, 3}、{2, 3, 1}、{3, 1, 2}和{3, 2, 1}。 #### 7. 求下一个字典序排列算法 求序列的下一个字典序排列通常涉及查找序列中第一个可以从升序...

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

    全排列是计算机科学和数学中的一个重要概念,指的是从n个不同元素中取出m(m≤n)个元素的所有可能的排序。全排列的数量可以通过排列数公式n!(n的阶乘)来计算。全排列算法广泛应用于程序设计中,尤其是在需要穷举...

    objective-c数组全排列算法

    全排列指的是从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排列起来,所有的排列情况就构成了全排列。 Objective-C实现全排列算法通常基于递归或回溯法。下面,我们将详细探讨如何使用Objective-C实现全排列...

    C语言实现的全排列算法

    2. 如果剩下的元素数量为0,说明已经完成了所有元素的排列,此时可以打印或记录当前的排列。 3. 否则,对于剩余的每一个元素,将其放入当前位置,然后递归处理剩下的元素。在递归调用返回后,撤销此次放置,以便尝试...

Global site tag (gtag.js) - Google Analytics