- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 作业答案
1、
伪代码:假设查找范围是有序的,ab
1. low=1;high=n; //设置初始查找区间
2. 测试查找区间[low,high]是否存在,若不存在,则查找失败;
否则
3. 取中间点mid=(low+high)/2; 比较a,b与r[mid],有以下三种情况:
3.1 若ar[mid],则high=mid-1;查找在左半区进行,转2;
3.2 若br[mid],则low=mid+1;查找在右半区进行,转2;
3.3 若ar[mid]并且br[mid],则在左半区对a用折半查找找到对应的r[i]=ar[i-1]a,在右半区对b用折半查找r[j]=br[j+1]b;
4. r[i]到r[j]之间的元素即为问题的解
参考代码:
#includeiostream.h
int i=0;
int j=0;//存储a-b的所有元素的起始下标和终止下标
int finda(int s[],int begin,int end,int a)//查找边界为a的元素
{
if(begin==end)return begin;
else
{
int m=(begin+end)/2;
if(s[m]==a)return m;
else if(s[m]a)return finda(s,begin,m,a);
else return finda(s,m+1,end,a);
}
}
int findb(int s[],int begin,int end,int b)//查找边界为b的元素
{
if(begin==end){
if(s[begin]b) return begin-1;
else return begin;
}
else
{
int m=(begin+end)/2;
if(s[m]==b)return m;
else if(s[m]b)return findb(s,m+1,end,b);
else return findb(s,begin,m,b);
}
}
void find(int s[],int begin,int end,int a,int b)//缩小a-b的查找范围
{
if(begin==end){
if(s[begin]=a)i=begin;
else if(s[begin]=b)j=begin;
}
else
{
int m=(begin+end)/2;
if(s[m]a) find(s,m+1,end,a,b);
else if(s[m]b)find(s,begin,m,a,b);
else {
i=finda(s,begin,m,a);
j=findb(s,m+1,end,b);
}
}
}
void main()
{
int s[]={1,2,5,8,11,24,31,40};
int a=2;
int b=30;
find(s,0,7,a,b);
coutiendsjendl;
}
4、
参考代码:根据程序运行结果显示使用两种方法生成的堆序列不一定一样
#includeiostream.h
const int N=8;
void SiftHeap(int r[],int k,int n)
{
int i=k,j=2*i;
int temp;
while(j=n)
{
if(jnr[j]r[j+1])j++;
if(r[i]r[j])break;
else
{
temp=r[i];
r[i]=r[j];
r[j]=temp;
i=j;j=2*i;
}
}
}
void InsertHeap(int r[],int k)
{
int i=k,j;
int temp;
while(i!=1)
{
j=i/2;
if(r[i]r[j])break;
else{
temp=r[i];
r[i]=r[j];
r[j]=temp;
i=j;
}
}
}
void main()
{
int s[N+1],s1[N+1];
//输入s和s1
for(int i=1;i=N;i++){cins[i];s1[i]=s[i];}
//利用筛选法生成堆
for(i=N;i=1;i--)SiftHeap(s,i,N);
//利用插入法生成堆
for(i=1;i=N;i++)InsertHeap(s1,i);
//输出s和s1
for(i=1;i=N;i++)
couts[i]endss1[i]endl;
}
您可能关注的文档
- 2012年人教版八年级上册语文第一次月考试题与答案.doc
- 2012年山东普通专升本招生计划与考试科目.doc
- 2012年陕西会计从业资格考试《财经法规》冲刺模拟试卷与答案(5).doc
- 2012年小学语文教师招聘考试专业知识全真模拟卷与答案三.doc
- 2012年天门市、潜江市、仙桃市、江汉油田中考语文试卷与答案.doc
- 2012年增城市初中毕业生学业考试物理模拟试题与答案.doc
- 2012年浙江宁波会计从业资格考试《会计基础》考前预测试卷与答案(2).doc
- 2012年深圳中考语文试题与答案.doc
- 2012年中考北京市东城区二模语文试题与答案.doc
- 2012年注册会计师《税法》(A卷)试题与答案-中大网校.doc
最近下载
- 现代项目管理(第二版)戴大双 5.项目组织与人力资源管理.ppt VIP
- 石膏娃娃课件.pptx VIP
- 常微分方程(第四版)课件 王高雄 高等教育出版社 第三章 一阶微分方程的解的存在定理.pptx VIP
- 现代项目管理(第二版)戴大双 4.计划与控制.ppt VIP
- 现代项目管理(第二版)戴大双 3.项目融资.ppt VIP
- 现代项目管理(第二版)戴大双 2.项目论证与评估.ppt VIP
- 《富致秘录》中源线建仓法(陈雅山 著 王明森 点校).pdf VIP
- 《同济大学-智能制造导论》第1章 智能制造概述_2.pptx VIP
- Scl90问卷.doc VIP
- 第一至四批上海市非物质文化遗产名录.doc VIP
文档评论(0)