全阵列输出算法.pptVIP

  • 3
  • 0
  • 约1.08千字
  • 约 12页
  • 2017-07-27 发布于河南
  • 举报
全阵列输出算法

输出排列算法;一、第一种递归算法;Void Permutations1(int t,int *x) { ??????int i; ????? if(t==N) ?????? { ???????????Output(x); ?????? } ?????? else ?????? { ????????????for(i=t;i=N;i++) ????????????{ ?????????????????swap(x[t],x[i]); ???????????????? Permutations1 (t+1,x); ?????????????????swap(x[i],x[t]); ?????? ?} ?????? } };void Output(int *x) { ?for(int i=1;i=N;i++) printf(“%d ”,x[i]); printf(“\n”); } void swap(int a,int b) { ?int p; ?p=a; ?a=b; ?b=p; } ;#define N 5 void main() { ?int x[N+1]; int i=0; ?for(i=1;i=N;i++) ? x[i]=i; ? Permutations1 (1,x); ?} ;时间复杂度 O(nn!);;二、第二种递归算法;Void Permutations2(int m,int *P) { ??????int i; ????? if(m==0) Output(P); ??????else ??????{ ???????????for(i=1;i=n;i++) ??????????{ ???????????????if(P[j]==0){ P[j]=m; ?????????????? Permutations2(m-1,P); ??????????????? P[j]=0; ? }????? } ????? } };时间复杂度 O(nn!);;三、字典序法 ;字典序算法如下: 23451是数字1…5的一个排列。从它生成下一个排列的步骤如下: 自右至左找出排列中第一个比右边数字小的数字4 ,在该数字后的数字中找出比4大的数中最小的一个5,将5和4交换得到 23541,在将41倒序得到23514 ,所 以23451的下一个排列是23514 。 ;

文档评论(0)

1亿VIP精品文档

相关文档