全排列输出算法ppt课件.ppt

全排列输出算法ppt课件.ppt

ID:59860159

大小:57.00 KB

页数:12页

时间:2020-11-23

全排列输出算法ppt课件.ppt_第1页
全排列输出算法ppt课件.ppt_第2页
全排列输出算法ppt课件.ppt_第3页
全排列输出算法ppt课件.ppt_第4页
全排列输出算法ppt课件.ppt_第5页
资源描述:

《全排列输出算法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、输出排列算法一、第一种递归算法假设可以生成n-1个数的全排列,针对n个数的全排列从左至右,第1位可以放入的数据分别是1…n;如此除去第1位放入的数据,后面从第2位到第n位的n-1个数我们由假设是可以输出全排列的;如此既可以得到n个数的全排列方法。VoidPermutations1(intt,int*x){inti;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]);}}}voidOutput(int*x){  for(inti=1;i<

2、=N;i++)printf(“%d”,x[i]);printf(“”);}voidswap(int&a,int&b){  intp;  p=a;  a=b;  b=p;}#defineN5voidmain(){  intx[N+1]; inti=0;for(i=1;i<=N;i++)  x[i]=i;  Permutations1(1,x);}时间复杂度O(nn!);当t=1时,for循环被执行了N次,permutation1(2)被调用了N次;当N=1时for循环一次都没有被调用因此有﹛0若n=1n*f(n-1)+n若n>1f(n)=二、第二种递归算法假定有办法生成1

3、、2、3、…n-1的全排列算法,那就能扩展生成1…n的全排列算法,把1、2、…n-1放入数组P[2..n],把n放入P[1],把数组P[2..n]全排列输出;接下来n放入P[2],将其他的n-1项子式全排列输出。这样一次将n放入下一个数组项里,输出其他子式的全排列。最后可以输出1…n的全部排列。VoidPermutations2(intm,int*P){inti;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!);﹛0若

4、m=0m*f(m-1)+n若m>0f(m)=三、字典序法字典序法即按照字母出现的顺序先后将字符列的排列全部输出。对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定。例如对于5个数字的排列12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是54321。字典序算法如下:23451是数字1…5的一个排列。从它生成下一个排列的步骤如下: 自右至左找出排列中第一个比右边数字小的数字4,在该数字后的数字中找出比4大的数中最小的一个5,将5和4交换得到2354

5、1,在将41倒序得到23514,所以23451的下一个排列是23514。字典序法 递增进位数制法 递减进位数制法 邻位交换法 n进位制法 递归类算法

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。