public class ArrangeTest {
public static void main(String[] args) {
String[] str= {"A","B","C","D","E"};
perm(str,0,str.length-1);
}
/**
* 产生list的所有排列
* @param list原始的数据存储数组
* @param k交换位置的下标
* @param m
*/
public static void perm(Object[] list ,int k,int m) {
//如果要交换的下标相等则表示只剩下一个元素
if(k==m) {
for(int i=0;i<=m;i++) {
System.out.print(list[i]+" ");
}
System.out.println();
}else {
//递归产生所有的排列
for(int i=k;i<=m;i++) {
swap(list,i,k);
perm(list,k+1,m);
swap(list,k,i);
}
}
}
//交换数组指定下标的两个元素
public static void swap(Object[] l,int i,int k) {
if(k!=i) {
Object temp=l[k];
l[k]=l[i];
l[i]=temp;
}
}
}
排列问题java实现
最新推荐文章于 2022-08-31 17:37:25 发布