以前写的排序算法,本人已经看不懂了,甚至连入参意义都看不懂了。献给在座的各位
#include <stdio.h>
#define LEN 3
void swap(int * o, int i, int j)
{
int tmp = o[i];
o[i] = o[j];
o[j] = tmp;
}
void cbk_print(int * subs)
{
printf("{");
for(int i = 0; i < LEN; i++)
{
printf("%d", subs[i]);
(i == LEN - 1) ? printf("") : printf(", ");
}
printf("}\n");
}
void perm(int list[], int s, int e, void (*cbk)(int list[]))
{
int i;
if(s > e)
{
(*cbk)(list);
}
else
{
for(i = s; i <= e; i++)
{
swap(list, s, i);
perm(list, s + 1, e, cbk);
swap(list, s, i);
}
}
}
int main()
{
int list[4] = {1,2,3,4};
int s = 0;
int e = 2;
perm(list, s, LEN-1, cbk_print) ;
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}