完整word版算法实验word文档良心出品.docx
- 文档编号:26525901
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:15
- 大小:64.18KB
完整word版算法实验word文档良心出品.docx
《完整word版算法实验word文档良心出品.docx》由会员分享,可在线阅读,更多相关《完整word版算法实验word文档良心出品.docx(15页珍藏版)》请在冰豆网上搜索。
完整word版算法实验word文档良心出品
递归与分治策略
①问题描述:
给定数组a[0:
n-1],试设计一个算法,在最坏情况下用[3n/2-2]次比较找出a[0:
n-1]中元素的最大值和最小值。
解决方法:
先将数组前一半的元素与后一半的元素分别逐个进行比较,如第1个与第n/2+1个,将较小者在前较大者在后交换好,则通过n/2次比较后最大值在后一半,最小值在前一半;然后在前一半与后一半中分别经过n/2-1次比较得到最大值与最小值。
整个算法经过n/2+2*(n/2-1)=3/2*n-2次比较。
代码实现:
#include
intmain()
{
intmax,min;
inti,n,t;
inta[100];
scanf("%d",&n);
for(i=0;i scanf("%d",&a[i]); for(i=0;i if(a[i]>a[n/2+i]){ t=a[i]; a[i]=a[n/2+i]; a[n/2+i]=t; } max=a[n-1]; min=a[0]; for(i=1;i if(min>a[i])min=a[i]; for(i=n-1;i>=n/2;i--) if(max printf("themaxis%d\n",max); printf("theminis%d\n",min); return0; } 运行截图: 实验心得: 本实验要点在于运用分治法的思想,将N个数之间的问题分割成一些小规模的相同问题,以便减少计算的复杂度。 ②问题描述: Gray码是一个长度为2^n的序列。 序列中无相同元素,每个元素都是长度为n位的串,相邻元素恰好只有一位不同。 用分治策略设计一个算法对任意的n构造相应的Gray码。 解决方法: 当n=1时,Gray码: 0,1 当n=2时,Gray码: 00,10,11,01 当n=3时,Gray码: 000,010,011,001,101,111,110,100 当n=4时,Gray码: 0000,0010,0011,0001,0101,0111, 0110,0100,1100,1110,1111,1101, 1001,1011,1010,1000 ······ 可以看出,从n=2开始,每个n的Gray码由两部分组成。 后一位的Gray码可以从前一位的Gray码求出。 即在n的Gray码的前半部分是n-1的所有Gray码顺次在前面加0得到;n的Gray码的后半部分是n-1的所有Gray码逆序在前面加1得到。 代码实现: #include intstr[100000][40]; intn; intf(intx) { inty=1; for(inti=1;i<=x;i++) y*=2; returny; } voidgray(inta,intb) { if(b==0)return; for(inti=0;i { str[i][n-b]=0; str[i+a/2][n-b]=1; } gray(a/2,b-1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 算法 实验 文档 良心 出品
![提示](https://static.bdocx.com/images/bang_tan.gif)