java 全排列 递归实现

来源:互联网 发布:java双色球代码 编辑:程序博客网 时间:2024/05/17 02:54
  • package com.syj.csdn;   
  •    
  • import java.util.ArrayList;   
  • import java.util.Arrays;   
  • import java.util.List;   
  •    
  • /**
  • * <p>
  • * Title:全排列算法
  • * </p>
  • *
  • */   
  • public class FullSort {   
  •     //将NUM设置为待排列数组的长度即实现全排列   
  •     private staticint NUM = 3;   
  •    
  •     /**
  •      * 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
  •      *
  •      * @param datas
  •      * @param target
  •      */   
  •     private staticvoid sort(List datas, List target) {   
  •         if (target.size() == NUM) {   
  •             for (Object obj : target)   
  •                 System.out.print(obj);   
  •             System.out.println();   
  •             return;   
  •         }   
  •         for (int i =0; i < datas.size(); i++) {   
  •             List newDatas = new ArrayList(datas);   
  •             List newTarget = new ArrayList(target);   
  •             newTarget.add(newDatas.get(i));   
  •             newDatas.remove(i);   
  •             sort(newDatas, newTarget);   
  •         }   
  •     }   
  •    
  •     public staticvoid main(String[] args) {   
  •         String[] datas = new String[] {"a", "b","c", "d" };   
  •         sort(Arrays.asList(datas), new ArrayList());   
  •     }   
  •