/** * 根据给定大小创建标识数组 * @param len */ public static void printAll(Integer len) { base = new Integer[len]; for (int i = 0; i < len; i++) { base[i] = (i + 1); } check(base, 0, base.length-1); }
/** * 排列组合 * @param base * @param start * @param end */ public static void check(Integer[] base, int start, int end) { if (start == end) { System.out.print("["); for (int i = 0; i <= end; i++) { if(i==end){ System.out.print(base[i]); }else{ System.out.print(base[i]+","); } } System.out.println("]"); } else { for (int i = start; i <= end; i++) { Integer temp = base[start]; base[start] = base[i]; base[i] = temp; check(base, start + 1, end); temp = base[start]; base[start] = base[i]; base[i] = temp; } } }
#include<iostream>
using namespace std;void perm(int list[],int k,int m)
{
if(k==m)
{
for(int i = 0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else
for(int i = k;i<=m;i++)
{
swap(list[k],list[i]);
perm(list,k+1,m);
swap(list[k],list[i]);
}
}inline void swap(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int list[]={1,2,3};//楼主稍微把这里改一下这个是1、2、3全排列
perm(list,0,2); return 0;}
* 输出全排列所有项
*
* @author Administrator
*/
public class GroupSort {
/**
* 0~10之间排列组合所需数组
*/
private static Integer[] base = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
/**
* 根据给定大小创建标识数组
* @param len
*/
public static void printAll(Integer len) {
base = new Integer[len];
for (int i = 0; i < len; i++) {
base[i] = (i + 1);
}
check(base, 0, base.length-1);
}
/**
* 排列组合
* @param base
* @param start
* @param end
*/
public static void check(Integer[] base, int start, int end) {
if (start == end) {
System.out.print("[");
for (int i = 0; i <= end; i++) {
if(i==end){
System.out.print(base[i]);
}else{
System.out.print(base[i]+",");
}
}
System.out.println("]");
} else {
for (int i = start; i <= end; i++) {
Integer temp = base[start];
base[start] = base[i];
base[i] = temp;
check(base, start + 1, end);
temp = base[start];
base[start] = base[i];
base[i] = temp;
}
}
}
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
//计算量过大,建议测试数据不要超过5
//printAll(new java.util.Random().nextInt(10));
printAll(3);
}
}