产生测试方法问题:所有排序,100分求助!!!

来源:百度知道 编辑:UC知道 时间:2024/06/04 19:18:29
求助高人:n个数排序,如何排出所有的可能?用c!
补充下啊,是要找出所有的排序情况 谢谢 ,比如3个数字,有abc ,acb,bac,bca,cab,cba这么多情况

用递归求出所有的排列:

#include <stdio.h>

int n;
int x[1000];
int u[1000];
int l[1000];

void dfs(int lev) {
if (lev == n) {
for (int i = 0; i < n; i++) {
printf("%d ", l[i]);
}
printf("\n");
return;
}
for (int i = 0; i < n; i++) {
if (!u[i]) {
u[i] = 1; l[lev] = x[i];
dfs(lev+1);
u[i] = 0;
}
}
}

int main() {
printf("输入n:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个数:");
scanf("%d", &x[i]);
}

dfs(0);

return 0;
}

lz用这个方法就能求出全排列了,但具体要用到递归的知识。

冒泡法
#include <stdio.h>
#define n 10000
main( )
{ int a[n],i,j,t;
printf("Input %d numbers:\n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i])