public class Permutation {
public int count=0; //统计总共排列数
public void permutate(String[] array,int i,int j){ //排列递归算法,排列下标从i--j
if(i>j){ //下标i大于j说明已完成一次排列
count++;
for(int k=0;k<array.length;k++){
System.out.print(array[k]+" ");
}
System.out.println();
}else{ //否则分别将i--j的数据与下标为i的位置交换数据,构成前缀,再全排列i+1---j的
for(int x=i;x<array.length;x++){
swap(array,i,x);
permutate(array,i+1,j);
swap(array,x,i); //一种情况完成,要恢复
}
}
}
public void swap(String[] array,int m,int n){
String t;
t=array[m];
array[m]=array[n];
array[n]=t;
}
public static void main(String[] args){
String[] test = new String[]{"香蕉","梨子","苹果"}; //测试数据
Permutation permutation = new Permutation();
permutation.permutate(test,0,2); //从下标0--2
System.out.println("总共有"+permutation.count+"种");
}
}
运算结果:
香蕉 梨子 苹果
香蕉 苹果 梨子
梨子 香蕉 苹果
梨子 苹果 香蕉
苹果 梨子 香蕉
苹果 香蕉 梨子
总共有6种
分享到:
相关推荐
自己写的基于字符的全排列算法,代码简洁,高效,7位数的全排列都是秒排!用到了广度优先排列,深度优先搜索和几个递归,唯一没完成的是退出时释放内存,呵呵,破解密码时超有用的哟,,
全排列算法
全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。
全排列算法
基于全排列算法的完整代码解析,可供理解搜索的技巧,有很高的使用价值
全排列算法详细解析(完整版)
使用递归实现的全排列算法,输出所有的全排列。 各种主流程序设计语言实现!
全排列算法 实例 一种实现了n个数全排列的算法 全排列算法 实例 一种实现了n个数全排列的算法
实现全排列组合的算法,供大家学习与参考。在需要对排列组合做差异分析的时候可以直接使用。例如:几个正则式的不同排列组合对匹配效果的影响
利用中介数实现全排列算法,采用java实现。
实现了字典序法、递增进位制数法、递减进位制数法、邻位对换法四种全排列算法。全排列算法有很多种,这里只是其中的一些,可以调试运行比较一下各种算法的效率。(该代码为初级版本,注重算法的实现,在交互方面需要...
交换算法得到全排列,排列组合的全排列算法(交换算法)
实现了全排列算法,每个元素用char类型表示,用递归算法,比较简洁实用。
用objective-c实现全排列算法,用数组来保存全排列排列的结果
组合数学中六种全排列算法详细解析,对于自学很有帮助哦,这里没有代码。
全排列算法设计分析.ppt
希望对需要的人有所帮助:) 希望对需要的人有所帮助:) 希望对需要的人有所帮助:)
主要介绍了Python字符串的全排列算法,结合实例形式较为详细的总结分析了Python字符串全排列的常见操作技巧,需要的朋友可以参考下
关于全排列算法。。。。
全排列算法便是用于产生全排列或者逐个构造全排列的方法。当然,全排列算法不仅仅止于全排列,对于普通的排列,或者组合的问题,也可以解决。本文主要通过对全排列以及相关算法的介绍和讲解、分析,让读者更好地了解...