首页 > 代码库 > 全排列算法
全排列算法
1、递归实现全排列
基本思路:
(1)、对于n个数的全排列,可以看成是其中1个数开始,另外(n-1)个数的全排列结尾的排列,如此循环,直至完成每一个数开始的全排列。
(2)、对于第一步得出的排列,将第1位忽略,剩下字串s,s的第一位作为开始,剩下的数进行全排列,循环,直至完成每一个数开始的全排列。
1 public class Permutation { 2 3 //将字符数组第a个字符和第b个字符交换位置 4 public static String swap(String str,int a,int b){ 5 char array[] = str.toCharArray(); 6 char temp = array[a]; 7 array[a] = array[b]; 8 array[b] = temp; 9 10 str = new String(array);11 return str;12 }13 14 public static void perm(String str,int current,int length){ //第current个字符开始,每个字符与其后面的字符交换位置。15 if(current == length){16 System.out.println(str);17 }18 else{19 for(int i = current; i <= length; i++){ //从current开始是因为,要输出初始字符串20 str = swap(str,current,i); 21 perm(str,current+1,length); //从current的下一个字符开始,str是第current个字符与第i个字符交换后的str,每个字符与其后面的字符交换位置22 str = swap(str, current, i);23 }24 }25 }26 27 public static void main(String[] args) {28 String str = new String("123");29 perm(str,0,str.length()-1);30 }31 }
全排列算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。