首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使得它们
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使得它们
admin
2014-04-17
51
问题
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使得它们的和正好是输入的那个整数数字。如果有多对数字的和等于输入的整数数字,输出任意一对即可。要求:
根据设计思想,采用C、C++或Java语言描述算法,关键之处给出注释。
选项
答案
算法实现如下: bool FindTwoNumbersWithSum ( //以下都为FindTwoNumberswithsum函数的参数 int data[], //已排序的数组 uns igned int length, //已排序数组的长度 int&numl, //第一个数字 int&num2, //第二个数字 int sum, //输入的整数数字 ) { bool found=false; //空数组将会出错 if(1ength<1) return found; int ahead=length一1; int behind=0; while(ahead>behind) { int curSum=data[ahead]+data[behind]; //如果两个数之和恰好等于输入的数字 if(curSum=sum) { num1=data[behind]; num2=data[ahead]; found=true; break; } //如果两个数之和大于输入的数字,将大的数字减小 else if(curSum>sum) ahead--; //如果两个数之和小于输入的数字,将小的数字加大 else behind++; } return found; }
解析
转载请注明原文地址:https://www.kaotiyun.com/show/aYxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
20世纪初,革命派与改良派论战的中心问题是()。
第三次科技革命促进了社会经济结构和社会生活结构的变化,其在社会经济结构方面的变化主要是()
十六国时期的历史,可以划分为前后两个时期,其分界线是()。
与前两次工业革命相比,第三次科技革命在能源结构上的主要变化是()
古埃及中王国时期出现了一个新兴的手工业部门,对世界文明做出了巨大贡献。这一新兴的手工业部门是()。
关于《新学伪经考》、《孔子改制考》的说法正确的是()。①都是利用古书古人宣传西方资产阶级政治的学说,向西方寻求救国真理②借用儒家学说和孔子的偶像进行宣传,可减少来自封建顽固势力的阻挠和压力③是维新变法的重要理论依据④动摇了封建统治的思想基
第二次世界大战期间,苏、美、英三国首脑达成的协议中未能实现的是()。
设计一个算法求图的中心点。设v是有向图G的一个顶点,把v的偏心度定义为:MAX{从w到v的最短距离|w属于V(G))如果v是有向图G中具有的最小偏心度的顶点,则称顶点v是G的中心点。
若无向图G=(V,E)中含有7个顶点,要保证图G在任何情况下都是连通的,则需要的边数最少是____。
下列关于图的叙述中,正确的是____。I.回路是简单路径Ⅱ.存储稀疏图,用邻接矩阵比邻接表更省空间Ⅲ.若有向图中存在拓扑序列,则该图不存在回路
随机试题
依多数国际公约的规定,商业秘密权归属于____领域。()
患者,女。动物饲养员,肝区隐痛、食欲缺乏个月余,查体触诊肝脏饱满,实验室检查白细胞略增高,CT平扫见肝脏多个囊性低密度病灶,大小不一,边界清晰,部分病灶其内可见钙化。根据以上临床资料,最需要鉴别诊断的是
简述教师的法定权利。
在不同网络节点的对等层之间通信需要的是()。
业务流程重组的实施步骤包括:项目的启动,拟定变革计划,建立项目团队;重新设计(58)并实施,持续改进,重新开始。
CPSR寄存器中的I和F分别为中断和快速中断禁止控制位,当I=__________【51】将禁止外部中断IRQ,当F=__________【52】时允许快速中断FIQ。
以下程序的功能是计算:s=1+12+123+1234+12345。请填空。main(){intt=0,s=0,i;for(i=1;i<=5;i++){t=i+【】;s=s+t;}printf(
Lookatthenotebelow.Youwillhearawomanleavingamessageaboutwheretoholdameeting.
Thecentralproblemofeconomicsistosatisfythepeople’sandnation’swants.Theproblemwearefacedwithisthatour【C1】___
A、450dollarsamonth.B、450yuanamonth.C、540dollarsamonth.D、540yuanamonth.A
最新回复
(
0
)