首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
输入一个按升序排序过的整数数组{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
35
问题
输入一个按升序排序过的整数数组{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://kaotiyun.com/show/aYxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
简述战后西欧经济的变化过程。
概述人民公社运动发生的原因、错误、危害及主要教训。
唐朝时,中国和非洲也有来往。下列有关这方面的证据中最具说服力的是()
在努力纠正“文化大革命”错误的过程中,遇到的严重障碍是()
1978年直接领导和发动真理标准问题讨论的中央领导人是()。
南洋兄弟烟草公司的创办者之一是()。
1920年,苏俄农民中流传着这样的说法:“土地属于我们,面包却属于你们;水属于我们,鱼却属于你们;森林属于我们,木材却属于你们”,它反映的是战时共产主义政策()。
下列描述中,属于冯.诺依曼体系结构的特点是()。①采用流水线技术;②指令和数据均以二进制表示;③存储程序并且存储时不区别数据和指令。
已知加权有向图G如下,回答下列问题:(1)画出该有向图G的邻接矩阵;(2)试利用Dijkstra算法求G中从顶点a到其他各顶点间的最短路径,并给出求解过程。
下列关于图的叙述中,正确的是____。I.回路是简单路径Ⅱ.存储稀疏图,用邻接矩阵比邻接表更省空间Ⅲ.若有向图中存在拓扑序列,则该图不存在回路
随机试题
只有个别形状的可展开物体才可以用三角形法进行展开。
简述商业信用的局限性。
前庭神经元炎的表现是梅尼埃病的表现是
石膏使用注意事项为
水痘风热轻证的治疗原则是
根据有关的法律规定,下列各项中,可以使用托收承付结算方式的包括( )。
我国北方夏季的暴雨成因多为()。
下列()不属于新核算体系的五套基本核算表。
表外业务
下面关于派生类的描述中错误的是()。
最新回复
(
0
)