对若干个数进行全排列的递归算法:
#include <stdio.h>
void swap(int *m, int *n)
{
if(m == n){
return;
}
*m = *m + *n;
*n = *m - *n;
*m = *m - *n;
}
void sort(int *list, int min, int max)
{
if(min == max){
for(int i=0; i<max; i++){
printf("%d\t", list[i]);
}
printf("\n");
}
for(int i=min; i<max; i++){
swap(&list[min], &list[i]);
sort(list, min+1, max);
swap(&list[min], &list[i]);
}
}
int main(int argc, char *argv[])
{
int list[3] = {1, 2, 3};
sort(list, 0, 3);
return 0;
}