时间:2021-05-20
本文实例讲述了Java基于递归解决全排列问题算法。分享给大家供大家参考,具体如下:
排列问题
设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}。集合x中元素的全排列记为Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R的全排列可归纳如下:
当n=1时,Perm(R)=(r),其中r是集合中唯一的元素;
当n>1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3)。。。。(rn)Perm(Rn)构成。
public class AllSort { public static void perm(int[] list, int k, int m) { if( k == m) { for (int i = 0; i <=m; i++) { System.out.print(list[i]); } System.out.println(); } else{ for(int i = k; i <= m; i++) { swap(list,k,i); perm(list, k+1 , m); swap(list,k,i); } } } public static void swap(int[] list, int a, int b) { int temp; temp = list[a]; list[a] = list[b]; list[b] = temp; } public static void main(String args[]) { int[] list = new int[5]; for(int i = 0; i < list.length; i++) { list[i] = i+1; } perm(list,0,list.length-1); }}运行结果:
123451235412435124531254312534132451325413425134521354213524143251435214235142531452314532153421532415432154231524315234213452135421435214532154321534231452315423415234512354123514243152435124135241532451324531253412531425431254132514325134321453215432415324513254132514312453125431425314523154231524341253415234215342513452134512351423512435412354213524135214423154235142135421534251342531432154325143125431524351243521413254135241235412534152341532453124532145132451234521345231523415231452431524135214352134532415321453421534125314253124543215431254231542135412354132513425132451432514235124351234更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,
本文实例讲述了JavaScript实现数组全排列、去重及求最大值算法。分享给大家供大家参考,具体如下:1、全排列(递归)functionpermutation(
算法原理如果用P表示n个元素的全排列,而Pi表示n个元素中不包含元素i的全排列,(i)Pi表示在排列Pi前面加上前缀i的排列,那么n个元素的全排列可递归定义为:
n位数字的全排列共有n!种。本排列只对字符型数字排列进行输出,输出的是字符型数字。这种问题一般都需要用递归的方法。java代码如下:publicclassTes
全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。给定一个具有n个元素的集合(n>=1),要求输出这个