递归全排序排列

来源:互联网 发布:网络终端遗传因子 编辑:程序博客网 时间:2024/05/16 15:14
#include <stdlib.h>#include <stdio.h>#include <math.h>#define max_num100#define SWAP(X, Y, TEMP)((TEMP = X), (X = Y), (Y = TEMP))//很灵活的递归算法
void perm(int *list, int i, int n){int j, temp;if (i == (n - 1)) {for (j = 0; j < n; j++) {printf("%d ", list[j]);}printf("\n");} else {for (j = i; j < n; j++) {SWAP(list[i], list[j], temp);perm(list, i + 1, n);SWAP(list[i], list[j], temp);}} }int main(int argc, char *argv[]){int list[max_num];int i, j, num, min, temp;printf("Please input number:");scanf("%d", &num);if (num < 0 || num > max_num) {fprintf(stderr, "invalid data\n");exit(1);}for (i = 0; i < num; i++) {list[i] = rand() % 1000;printf("%d  ", list[i]);}printf("\n");for (i = 0; i < num; i++) {min = i;for (j = i + 1; j < num; j ++) {if (list[j] < list[min])min = j;}SWAP(list[i], list[min], temp);}printf("After select sort result:\n");for (i = 0; i < num; i ++)printf("%d  ", list[i]);printf("\n\n\n");perm(list, 0, num);}

0 0
原创粉丝点击