Java实现全排列、组合算法

简介: Java实现全排列、组合算法

全排列

解法一:

输入一串字符,然后对字符进行全排列,如“abc”,全排列结果为:"abc","acb","bac","bca","cab","cba".

分析:从字符串中选择一个作为第一个字符,然后对剩下的字符串进行全排列,如此递归下去,直到打印出全部排列。如:"abc":

1、选a作为第一个字符:”abc“,”acb“;

2、选b作为第一个字符:”bac“,”bca“;

3、选c作为第一个字符:”cab“,”cba“;

参考代码如下:

Java实现全排列、组合算法

递归实现全排列算法

解法二:

这种解法是将字符串从小大倒排序,以此得到整体的最小顺,然后找到次小顺序,直到得到最大顺序,也就是从大到小的顺序,如:”23415“,最小顺序是:"12345",次小顺序是:”12354“,........直到最大顺序:”54321“。这里重点是找到某个顺序值得下一个顺序。找下一个顺序的算法如下:假设到了”21543“,从后往前找到i-1位置小于i位置的下标,1<5,所以要找的下表pos=1,将下标为1的数字1,和它后面最小的且大于它的数替换,”21543”--->"23541",然后再将下标1后面的字符串翻转得到:"23145",这就得到了“21543”下一个顺序值“23145”,如此下去,直到输出所有结果。如果你想学习java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。

参考代码如下:

Java实现全排列、组合算法

排列算法的结果总共有n!个,所以时间复杂度至少n!级别。

组合算法

组合算法代码比较简单,可以读代码理解:

Java实现全排列、组合算法

放回全排列

放回全排列就是类似于三个筛子总共有6*6*6=216中结果。使用递归思想解决,代码比较简洁。

参考代码如下:

Java实现全排列、组合算法

相关文章
|
16天前
|
缓存 算法 安全
Java中的数据结构与算法优化策略
Java中的数据结构与算法优化策略
|
14天前
|
算法 Java
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
21 1
|
16天前
|
缓存 算法 NoSQL
Java中的分布式缓存与一致性哈希算法
Java中的分布式缓存与一致性哈希算法
|
12天前
|
存储 算法 Java
分布式自增ID算法---雪花算法(SnowFlake)Java实现
分布式自增ID算法---雪花算法(SnowFlake)Java实现
|
14天前
|
算法 Java 程序员
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
18 0
|
15天前
|
算法 Java 开发者
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
16 0
|
15天前
|
存储 算法 Java
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
13 0
|
17天前
|
监控 算法 搜索推荐
有效利用Java中的内置算法优化应用性能
有效利用Java中的内置算法优化应用性能
|
17天前
|
存储 算法 搜索推荐
使用Java实现高效的数据结构与算法
使用Java实现高效的数据结构与算法
|
17天前
|
存储 算法 搜索推荐
Java中的数据结构与算法实现
Java中的数据结构与算法实现

热门文章

最新文章