void swap(int *a,int *b){
int c;
c=*a;
*a=*b;
*b=c;
}
void range(int *a,int beg_p,int end_p){
int i=0;
/*-----------------------------------------------------------------
*递归的终点,到这个时候,只有一个元素的全排列,此时候,不用了,直接
*输出所有的元素,完成本次任务。
*-----------------------------------------------------------------*/
if(beg_p == end_p){
for(i=0;i
printf("%d,",a[i]);
}
else{
for(i=beg_p;i
/*------------------------------------------------------------------
*此处,可以理解为,第一个位置,可以由开头开始,到结尾的任何一个元素
*而,递归的时候,返回的是从下个位置起到尾的排列
*-------------------------------------------------------------------*/
swap(&a[i],&a[beg_p]);
range(a,i+1,end_p);
}
}
}
阅读(297) | 评论(0) | 转发(0) |