`
mtnt2008
  • 浏览: 370791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

高效率的全组合算法(Java版实现)

阅读更多

 

博客上看到的一个算法,用Java实现了一个

 

算法描述:

 

算法说明:当n大于2时,n个数的全组合一共有(2^n)-1种。

当对n个元素进行全组合的时候,可以用一个n位的二进制数表示取法。

1表示在该位取,0表示不取。例如,对ABC三个元素进行全组合,  100表示取A,010表示取B,001表示取C,101表示取AC  110表示取AB,011表示取BC,111表示取ABC

注意到表示取法的二进制数其实就是从1到7的十进制数 

推广到对n个元素进行全排列,取法就是从1到2^n-1的所有二进制形式 

要取得2^n,只需将0xFFFFFFFF左移32-n位,再右移回来就可以了。

 

算法实现:

 

package com.set.test;

public class SetTest {

	public static void main(String[] args) {

		String str[] = { "A", "B", "C", "D", "E" };

		int nCnt = str.length;

		int nBit = (0xFFFFFFFF >>> (32 - nCnt));

		for (int i = 1; i <= nBit; i++) {
			for (int j = 0; j < nCnt; j++) {
				if ((i << (31 - j)) >> 31 == -1) {
					System.out.print(str[j]);
				}
			}
			System.out.println("");
		}

	}
}
 

 

 

分享到:
评论
2 楼 sybell 2014-01-28  
1楼的要多循环一次的,结果却一样。
1 楼 yangguo 2010-09-25  
楼主比较蛋疼,代码绕着来写。还有不要在java界搞匈牙利命名法则。

 String str[] = { "A", "B", "C", "D", "E" };  
				int nCnt = str.length;

//				int nBit = (0xFFFFFFFF >>> (32 - nCnt));

				int nBit = 1<<nCnt;

				for (int i = 1; i <= nBit; i++) {
					for (int j = 0; j < nCnt; j++) {
						if ((1<<j & i ) != 0) {
							System.out.print(str[j]);
						}
					}
					System.out.println("");
				}

相关推荐

    各种算法的java实现

    在《各种算法java实现.docx》这个文档中,你可能会找到以上算法的详细解释和Java代码示例。通过学习这些内容,不仅可以加深对算法的理解,还能提升Java编程能力,对日后的软件开发工作大有裨益。对于初学者来说,这...

    Pairwise Testing算法的java实现

    在这个java实现中,项目利用了正交数组(Orthogonal Arrays)策略。正交数组是一种高效的数据结构,用于在给定维度下创建最小数量的测试用例,同时确保每个输入因素的每一对组合至少出现一次。这种方法大大减少了...

    lzw压缩算法java实现

    LZW(Lemple-Ziv-Welch)压缩算法是一种高效的无损数据压缩...在Java实现中,需要注意内存管理和效率优化,以确保算法的高效运行。同时,LZW算法也有版权问题,曾被用于GIF图像格式,但现在已经有其他开源的替代方案。

    高效的java版排列组合算法

    下面将详细介绍高效的Java版排列组合算法的实现。 一、排列组合算法的概念 排列组合算法是指从n个元素中选择m个元素的所有可能的组合。例如,从5个元素中选择3个元素的排列组合有10种可能的组合:{1,2,3}、{1,2,4}...

    JAVA 经典算法(也有C实现)

    这些算法用于对一组数据进行排序,各有优缺点,例如,冒泡排序简单但效率低,而快速排序则具有较高的平均性能。 2. **查找算法**:如二分查找、哈希查找等。二分查找适用于有序数组,能在较短的时间内找到目标元素...

    Java语言实现六种排序算法

    Java实现冒泡排序的关键在于两个for循环,外层控制遍历次数,内层用于相邻元素的比较和交换。 2. 选择排序(Selection Sort) 选择排序每次找出未排序部分的最小(或最大)元素,然后将其与未排序部分的第一个元素...

    排序算法JAVA实现,eclipse+txt

    在IT领域,排序算法是计算机科学中的核心概念,特别是在数据结构和算法分析中。Java作为一种广泛应用的编程语言,提供了丰富的...这个资料包中的Java实现和Eclipse工程,可以帮助开发者深入理解和实践这些排序算法。

    经典算法问题的java实现<一>

    在本资源中,我们关注的是"经典算法问题的java实现&lt;一&gt;",这通常涉及到计算机科学中的基础算法,特别是那些用Java编程语言实现的。这些算法是解决各种计算问题的关键,包括排序、搜索、图论、动态规划等。Java作为一...

    基于java与粒子群优化算法PSO的自动组卷考试系统设计与实现

    在本项目中,“基于Java与粒子群优化算法PSO的自动组卷考试系统设计与实现”是一个创新的教育技术应用,旨在提高教师的工作效率并确保考试的公平性。该系统结合了计算机科学与优化算法,为教育领域带来智能化的解决...

    仿真算法实现TSP问题之----遗传算法(Java版)

    **Java实现遗传算法的关键步骤** 1. **初始化种群**:随机生成一定数量的个体(即初始的旅行路线),这些个体构成了第一代种群。 2. **适应度函数**:计算每个个体的适应度值,这通常是根据路线的总距离来确定的。...

    基于Java语言实现公钥古典加密算法

    本文将详细探讨一种基于Java语言实现的公钥古典加密算法,该算法旨在提供更高级别的安全性和跨平台兼容性。 **一、加密算法原理** 1. **码表生成**:码表是加密解密的基础,包含所有可见ASCII码且每个字符只出现一...

    数据结构与算法分析(Java版) 英文版

    《数据结构与算法分析(Java版)》是一本深度探讨数据结构和算法的权威书籍,主要面向使用Java语言的读者。这本书旨在帮助开发者理解和掌握如何有效地实现和使用各种数据结构和算法,从而提升编程能力,优化程序性能。...

    java实现遗传算法解决tsp问题

    Java 实现遗传算法解决TSP问题是一个典型的计算机科学与信息技术应用案例。TSP(旅行商问题)是一个经典的组合优化问题,目标是找到访问每个城市一次并返回起点的最短路径。遗传算法是一种模拟自然选择和遗传机制的...

    遗传算法 tsp java

    《遗传算法在旅行商问题(TSP)中的应用——基于Java实现》 旅行商问题(Traveling Salesman Problem,简称TSP)是一个经典的组合优化问题,它询问的是:给定一个城市列表,一个旅行商如何规划一条路线,使得他能...

    关于各种排列组合java算法实现方法

    本文将探讨两种不同的Java实现方法,分别基于二进制状态法和递归思想,用于生成排列组合。 首先,我们来看第一种方法:**二进制状态法**。这种方法的核心思想是利用二进制数来表示每个排列,然后通过遍历所有可能的...

    算法 第4版.pdf

    四、Java实现 虽然《算法》第四版并未指定语言,但学习算法时使用Java作为实现语言非常常见。Java具有丰富的类库和良好的面向对象特性,使得它在实现各种数据结构和算法时更为便捷。 1. Java基础:理解类、对象、...

    遗传算法实现的旅行商问题(Java)

    在Java实现中,首先需要创建一个表示解的类,通常是一个整数数组,每个元素代表旅行路径中的一个城市。然后,种群由多个这样的解组成,初始种群可以通过随机生成来得到。 适应度函数用于评估每个解的质量,通常是...

    JAVA语言版_数据结构与算法(内含源代码)

    这个压缩包“JAVA语言版_数据结构与算法(内含源代码)”显然是一个专门针对Java程序员的学习资源,包含实现各种数据结构和算法的源代码。 首先,我们来探讨数据结构: 1. **数组**:最基础的数据结构,用于存储...

    算法与数据结构体系课(java版,16周全)

    《算法与数据结构体系课(Java版,16周全)》是一门全面深入学习算法与数据结构的课程,特别适合对计算机科学有兴趣或者正在学习软件开发的Java开发者。这门课程涵盖了从基础到高级的各种数据结构和算法,旨在提升...

    算法 第4版-谢路云 译 Java描述 -完整版.pdf

    《算法 第4版》是由计算机科学家罗伯特·塞弗(Robert Sedgewick)和凯文·韦恩(Kevin Wayne)共同编著的一本经典算法教程,由谢路云翻译为中文,...结合压缩包中的Java实现,读者可以亲手实践,加深理解,提升编程能力。

Global site tag (gtag.js) - Google Analytics