首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
输入一个按升序排序过的整数数组{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
30
问题
输入一个按升序排序过的整数数组{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年发生的开辟人类历史新纪元的重大事件是()。
十六国时期的历史,可以划分为前后两个时期,其分界线是()。
蒋介石在国民党的()全国代表大会上的对外关系演说表示国民党对日关系开始发生变化。
巴黎和会上,英美主张把原德国在山东的权利转让给日本,华盛顿会议又表示支持中国让日本归还山东的要求,英美态度发生变化的根本原因是()。
下列哪两个国家是第二次工业革命的发源地和“中心”?
北约和华约两个组织对峙近半个世纪,这()。
随机试题
患儿,男,28天。足月顺产,面目、皮肤发黄,颜色鲜明,哭闹不安,呕吐腹胀,不思乳食,尿黄便结,舌红苔黄腻,指纹紫滞。其诊断是
男,65岁。反复发作反酸,胃灼热,胸骨后痛10年余,近日感觉上述症状加重明显,伴进食哽咽感,食欲不振,消瘦。近期症状变化,以下哪种情况可能性最小
《中华人民共和国环境保护法》和《中华人民共和国环境影响评价法》对建设工程项目环境保护的基本要求有()。
LOF份额面值认购份额按四舍五入的原则保留到小数点后三位。()
游戏的精力过剩论认为儿童游戏是()。
下列句子中,关联词语使用错误的是()。
下列思想属于孔子教育主张的有()。
有A,B,C,D,E5个元素按次序入栈,在各种可能的出栈次序中,以元素C,D最先出栈的序列中,下列正确的一组是()。
有下列程序段publicclassfun{publicstaticvoidmain(Stringargs[]){charb[]="Hello,you";b[5
下列关于计算机病毒的叙述中,错误的是
最新回复
(
0
)