您的位置:首页 > 编程语言 > Java开发

排列问题java实现

2017-09-19 13:13 260 查看
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;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: