您的位置:首页 > 其它

排列问题

2016-03-31 23:42 253 查看
算法思想过程:

集合R,r1,r2,r3,...,rn为集合R的元素。

当元素n为1个时,perm(R)=(r),其中r为集合R中唯一的元素;

当n>1时,perm(R)由(r1)perm(R1),(r2)perm(R2),...,(rn)perm(Rn)组成。

package cn.aaa;

public class perm {

//排序函数

public static void perm(Object list[],int k,int m){ //k为起点,m为终点

//产生list[k: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,k,i);

perm(list,k+1,m);

swap(list,k,i);

}

}

}

//交换函数,交换list中第k个位置与第m个位置的值

public static void swap(Object list[],int k,int m){

Object temp;

temp = list[k];

list[k] = list[m];

list[m] = temp;

}

public static void main(String[] args) {

Object list[] = {1,2,3,4};

System.out.println("list的所有排列为:");

perm(list,0,list.length-1);

}

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