java 全排列 递归实现

3 篇文章 0 订阅
  • package com.syj.csdn;   
  •    
  • import java.util.ArrayList;   
  • import java.util.Arrays;   
  • import java.util.List;   
  •    
  • /**
  • * <p>
  • * Title:全排列算法
  • * </p>
  • *
  • */   
  • public class FullSort {   
  •     //将NUM设置为待排列数组的长度即实现全排列   
  •     private static int NUM = 3;   
  •    
  •     /**
  •      * 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
  •      *
  •      * @param datas
  •      * @param target
  •      */   
  •     private static void 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 static void main(String[] args) {   
  •         String[] datas = new String[] { "a", "b", "c", "d" };   
  •         sort(Arrays.asList(datas), new ArrayList());   
  •     }   
  •    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值