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
发表评论
-
全排列3
2009-06-04 02:26 654public class FullArray ...{ ... -
全排列
2009-06-04 02:07 774算法1 一个经典的全排列算法zz2007-06-1 ... -
Java排序问题
2009-04-27 20:04 732package com.softeem.jbs.lesso ... -
水仙花数
2009-04-15 21:28 1171public class StaticClass{ ... -
百钱百鸡
2009-04-15 21:27 763public class ma { public s ... -
猴子吃桃
2009-04-15 21:25 850/*public class Chitao { publ ... -
用dom4j组件解析如下XML格式的文件:
2009-04-15 21:18 800<?xml version="1.0&qu ... -
做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思
2009-04-15 21:16 4915interface Animal { publ ... -
做一个单子模式的类,只加载一次属性文件
2009-04-15 21:14 1030import java.io.FileInputStrea ... -
拷贝一个目录(文件)到指定路径
2009-04-15 21:12 1020/** *拷贝一个目录或者文件到指定路径下 ... -
用JAVA中的多线程示例银行取款问题
2009-04-15 21:09 2035/** *@authorleno *账户类 * ... -
用JAVA中的多线程示例火车站售票问题
2009-04-15 21:07 2372/** *@authorleno *售票类 * ... -
用JAVA中的多线程示例生产者和消费者问题
2009-04-15 21:05 763class Producer implements Run ... -
编程实现序列化的Student(sno,sname)对象
2009-04-15 21:03 934import java.io.IOException; ... -
二分查找特定整数在整型数组中的位置
2009-04-15 21:00 816/** *二分查找特定整数在整型数组中的位置( ... -
获得任意一个int类型的阶乘
2009-04-15 20:59 864/** *获得任意一个整数的阶乘 ... -
将某个日期以固定格式转化成字符串
2009-04-15 20:56 884/*将某个日期以固定格式转化成字符串 ... -
一般的正弦曲线
2009-04-15 20:31 744import java.applet.*; import ... -
线程的正弦函数
2009-04-15 20:27 829import java.awt.*; import ja ... -
画星的两个方法
2009-04-14 23:26 715方法一: public class T { ...
相关推荐
递归实现元素全排列
全排列2.cpp` 文件应该包含了这个算法的完整实现,并且`寒假40.全排列2.exe` 是编译后的可执行程序,可以直接运行以测试和验证算法的正确性。通过运行这个程序,你可以得到1到n的所有可能排列,这对于理解和学习...
全排列代码,C语言代码,用来解决全排列问题,csc 认证
用C++语言写的全排列,有助于理解递归,全排列,全排列,全排列,全排列
自己写的基于字符的全排列算法,代码简洁,高效,7位数的全排列都是秒排!用到了广度优先排列,深度优先搜索和几个递归,唯一没完成的是退出时释放内存,呵呵,破解密码时超有用的哟,,
例如,对于数字序列1, 2, 3,其全排列包括(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2)和(3, 2, 1)。在MATLAB中,生成全排列矩阵的算法通常涉及递归或回溯方法。 MATLAB是一种强大的数值计算和符号计算...
在Java编程中,全排列是一个常见的问题,它涉及到算法和数据结构的知识。全排列是指从给定的字符数组中,按照一定的顺序生成所有可能的排列组合。这个问题通常使用回溯法来解决,因为它能够有效地避免重复的排列。...
2. **回溯**:当递归到某一步发现无法继续生成新的排列时,需要回溯到上一步,尝试选择不同的元素。 3. **剪枝**:为了提高效率,可以通过剪枝技术避免不必要的计算,比如记录已使用过的元素,防止重复。 4. **...
例如,对于集合{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矩阵,全排列组合生成的下标对应于矩阵的不同行和列元素,然后比较这些组合的和,找到最小值。随着矩阵大小的增加,这种方法的计算量同样会迅速增长。 总结,局部搜索在全排列问题中的应用主要体现在使用...
std::vector<int> nums = {1, 2, 3}; permute(nums, 0); return 0; } ``` 在这个代码中,`permute`函数接收一个整数向量`nums`和一个起始索引`start`。当`start`等于`nums.size()`减1时,表示已经到达数组末尾,...
2. 回溯法的基本原理和在全排列问题中的应用。 3. C#语言的递归编程技巧。 4. 数组操作和列表(List)的使用。 5. 性能优化策略,如迭代实现、生成器函数和分块处理。 理解并掌握这些知识点,可以帮助开发者解决...
/*设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}为 例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列...
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的阶乘)来计算。全排列算法广泛应用于程序设计中,尤其是在需要穷举...
全排列指的是从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排列起来,所有的排列情况就构成了全排列。 Objective-C实现全排列算法通常基于递归或回溯法。下面,我们将详细探讨如何使用Objective-C实现全排列...
2. 如果剩下的元素数量为0,说明已经完成了所有元素的排列,此时可以打印或记录当前的排列。 3. 否则,对于剩余的每一个元素,将其放入当前位置,然后递归处理剩下的元素。在递归调用返回后,撤销此次放置,以便尝试...