java最基础的算法

java最基础的算法全排列 解法一 输入一串字符 然后对字符进行全排列 如 abc 全排列结果为 abc acb bac bca cab cba 分析 从字符串中选择一个作为第一个字符 然后对剩下的字符串进行全排列 如此递归下去 直到打印出全部排列 如

大家好,我是讯享网,很高兴认识大家。



全排列

解法一:

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

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

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

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

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

参考代码如下:

Java基础学习: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基础学习:java全排列递归算法

放回全排列

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

参考代码如下:

Java基础学习:java全排列递归算法

 以上就是动力节点java培训机构的小编针对“Java基础学习:java全排列递归算法”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

小讯
上一篇 2024-12-23 23:55
下一篇 2024-12-26 07:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/7524.html