`
Tristan_S
  • 浏览: 366820 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

全排列

阅读更多
全排列的复杂度 并不是简单的N的N次方
而是
36
424
5120
6720
75040
840320
9362880
103628800
1139916800
12479001600
13OOM



代码
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class AllArrangeTest {

	static int i = 0 ;
	public static void main(String[] args) {
		String[] array = new String[] { "0", "1", "2" ,"3", "4", "5" ,"6", "7"};
		List list = Arrays.asList(array);
		listAll(list, "");
		System.out.println(i);
		
	}

	public static void listAll(List candidate, String prefix) {
		if (candidate.isEmpty()) {
			//System.out.println(prefix);  
			i++;
		}
		
		//ArrayList是利用array来实现的,所以读取速度很快,LinkedList是用链表实现的,所以增删速度比较快.
		for (int i = 0; i < candidate.size(); i++) {
			List temp = new LinkedList(candidate);
			listAll(temp, prefix + temp.remove(i));
		}
	}
}

分享到:
评论

相关推荐

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

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

    全排列acc pascal程序加题解 全排列

    全排列acc pascal程序加题解 全排列 Time Limit:20000MS Memory Limit:65536K Total Submit:506 Accepted:218 Description 列出所有数字1到数字n的连续自然数的排列,要求所产生的任一数字序列中不允许出现得复...

    C/C++全排列

    全排列是组合数学中的一个重要概念,它涉及到计算机科学中算法设计和分析的范畴,尤其是在解决排列组合问题时。在C/C++编程语言中,实现全排列通常需要借助递归或回溯法。以下是对全排列及其C/C++实现的详细解释。 ...

    五个数的全排列

    在编程领域,全排列是一个经典的算法问题,它涉及到如何生成一组特定数量的元素的所有可能排列。在这个场景中,我们关注的是使用C语言来实现对5个数的全排列。C语言是一种底层、高效的编程语言,适合处理这种计算...

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

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

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

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

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

    全排列是一种经典的组合数学问题,它涉及到从n个不同元素中取出n个元素,并按照一定的顺序排列,所有可能的排列组合就是全排列。在计算机科学中,全排列算法经常用于解决各种排列组合的问题,比如测试用例的生成、...

    序数法全排列

    序数法全排列 序数法全排列是指使用序数法来生成全排列的算法,该算法结合组合数学上的思想,可以使用C语言实现。下面将对序数法全排列的知识点进行详细的解释: 1. 序数法的基本概念 序数法是一种生成全排列的...

    使用swap求解不重复字符串的全排列

    123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是123中的1与后面两数交换得到的。然后可以将123的第二个数和每三个数交换得到132。同理可以根据213和321来...

    生成全排列矩阵.zip

    全排列矩阵是数学中的一种重要概念,特别是在组合数学和计算机科学中有着广泛的应用。它指的是一个有限序列的所有可能排列方式组成的矩阵。例如,对于数字序列1, 2, 3,其全排列包括(1, 2, 3), (1, 3, 2), (2, 1, 3)...

    局部搜索解决全排列问题

    在这个实验报告中,局部搜索被应用于解决全排列问题,即找到一个给定数量的元素的所有可能排列方式。全排列问题是一个典型的组合问题,具有较高的计算复杂度。 全排列的核心思想是递归。递归是一种函数或程序调用...

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

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

    objective-c数组全排列算法

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

    输出n个整数的全排列

    全排列是组合数学中的一个重要概念,它涉及到计算机科学中的算法设计和数据结构。在这个C++程序实验中,我们将深入理解如何生成一个给定整数集合的全排列。这个任务通常用递归或回溯法来解决,对于学习编程和算法...

    全排列算法C语言超简洁

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

    算法分析与设计中的全排列问题

    "算法分析与设计中的全排列问题" 全排列问题是计算机科学中的一种经典问题,即给定n个元素{r1,r2,…,rn},生成所有可能的排列组合。这种问题在很多领域中都有重要应用,如数据结构、算法设计、机器学习等。 在上述...

    全排列(阶乘)输出程序

    全排列是一种组合数学中的概念,指的是从n个不同的元素中取出n个元素,按照一定的顺序进行排列,所有可能的排列方式的总数就是全排列的个数。在本例中,我们关注的是如何用编程语言来实现全排列的输出,特别地,使用...

    C语言实现的全排列算法

    全排列算法是计算机科学中一个基础且重要的概念,特别是在算法设计和组合数学中。全排列是指从n个不同元素中取出m个元素,按照一定的顺序排列的所有可能的组合方式。在本例中,我们讨论的是使用C语言实现的全排列...

    递归练习 数据结构实验全排列

    本实验主题为“递归练习 数据结构实验全排列”,主要针对山东大学数据结构课程中的一个经典问题——全排列进行深入探讨。全排列是指从n个不同元素中取出m个元素,按照一定的顺序排列起来,所有可能的排列组合。在...

    全排列——递归排序和字典序列

    全排列算法有两个比较常见的实现:递归排列和字典序排列。 (1)递归实现 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典...

Global site tag (gtag.js) - Google Analytics