首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
输入一个按升序排序过的整数数组{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
2017-11-20
66
问题
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,我们可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,当输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使得它们的和正好是输入的那个整数数字。如果有多对数字的和等于输入的整数数字,输出任意一对即可。要求:
根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。
选项
答案
算法实现如下: boo1 indTwoNumbersWithSum { //以下都为FindTwoNumbersWithSum函数的参数 int data [], //己排序的数组 unsigned int length, //已排序数组的长度 int&num1, //第一个数字 int&num2, //第二个数字 int sum, //输入的整数数字 } { boo1 found=faise; //空数组将会出错 if(1ength<1) return found; int ahead=length-1; int behind=0; while(ahead>behind) { int curSum=data[ahead]+data[behind]; //如果两个数之和恰好等于输入的数字 i f(curSum==sum) { numl=data[behind]; num2=data[ahead]; found=true, break; } //如果两个数之和大于输入的数字,将大的数字减少 else if(curSum>sum) ahead--; //如果两个数之和小于输入的数字,将小的数字加大 else behind++; } return found; }
解析
转载请注明原文地址:https://kaotiyun.com/show/2VRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
水门事件
1917年发生的开辟人类历史新纪元的重大事件是()。
战国时期的著名水利工程“郑国渠”位于今天的()。
西汉初年,西域共有36国,其中以()人口最多。
解放军渡江战役中横渡长江的东西两个攻击点是()。
晚清时期清帝年号的正确排序是
解放军渡江战役中横渡长江的东西两个攻击点是()。
关于分页系统,回答下列问题:(1)在页表中,哪些数据项是为实现换页而设置的?(2)设某系统为每个作业进程分配3个内存块,某作业进程在运行访问中的轨迹为1,4,3,1,6,8,1,且每一页都是按请求装入的。问:先进先出页面置换算法(FIF
指令字长为12位,每个地址码为3位,采用扩展操作码的方式,设计4条三地址指令、16条二地址指令、64条一地址指令和16条零地址指令。(1)给出一种操作码的扩展方案。(2)计算该方案操作码的平均长度。
随机试题
20世纪80年代中叶,《环境保护法》(试行)修改的重点主要是围绕_______展开的。
肺炎链球菌所致疾病不包括()
A、骨髓细胞内可见Auer小体B、中性粒细胞碱性磷酸酶积分增高C、Ph染色体阳性D、糖原染色阳性E、非特异性酯酶阳性,可被氟化钠抑制类白血病反应可见
苯妥英钠的用途不包括
某地区高技术产业科技活动人员情况表如下:上面的分组表是( )。
在其他条件相同的情况下,按单利计息的现值要低于用复利计算的现值。()
下列有关国际联盟的叙述,不正确的一项是()。
设A是n阶矩阵,证明:r(A)=1的充分必要条件是存在n维非零列向量a,β,使得A=aβT;
在一个IP分片数据报中,如果片偏移字段的值为十进制数100,那么该分片携带的数据是从原始数据报携带数据的第()个字节开始的。
下列关系表达式中,运算结果为逻辑真.T.的是
最新回复
(
0
)