JAVA实现全排列算法

时间过得很快,不知多久没写些东西了,随着工龄的变长,每天写程序的时间也渐渐减少了,但技术在我的工作和生活中还是占着重要的地位,今天心情不错,泡泡论坛,写写代码,温故知新。原创代码,如有错误请拍砖。

回顾高中数学课本:

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

 package com.syj.csdn; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * <p> * Title:全排列算法 * </p> * * <p> * Copyright: http://blog.csdn.net/sunyujia/ * </p> * * @author 孙钰佳 * @main [email protected] * @date 2009-04-25 23:57:23 PM */ 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()); } }  

结果:


abc
abd
acb
acd
adb
adc
bac
bad
bca
bcd
bda
bdc
cab
cad
cba
cbd
cda
cdb
dab
dac
dba
dbc
dca
dcb

你可能感兴趣的:(java,算法,Date,String,list,object)