快速找出一个数组a中的两个数字,使这两个数字之和等于一个给定的值,如果存在,则输出这两个数,否则,

输出不存在最好发到邮箱378085831@qq.com如果有周四之前帮弄出来的,悬赏会更高... 输出不存在 最好发到邮箱 378085831@qq.com
如果有周四之前帮弄出来的, 悬赏会更高
展开
 我来答
yarkeshen
2012-11-20 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:89万
展开全部
这个好像还简单吧?
用2个循环嵌套一下就好了啊。
double a[n]={给定数组};
double x=给定的值
bool bFind=false;
int i, j;

for(i=0;i<n-1;i++)
{
if(bFind)
{
break;

}
else
{

for( j=i+1;j<n;j++)
{
if(x==a[i]+a[j])
{
bFind=true;

break;

}

}
}

}
if(bFind)
a[i]和a[j]就是需要的值
else
返回 找不到就好了
loboho
推荐于2018-03-26 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:405万
展开全部
先qsort对数组排序,然后对数组的每个元素,用二分查找去找出其他元素与他的和等于给定值的。

时间复杂度:N*logN + N*logN => N*logN (时间复杂度忽略常数)
对比穷举的时间复杂度N*N
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-20
展开全部
笑而不语- -
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wll75
2012-11-19 · 超过14用户采纳过TA的回答
知道答主
回答量:156
采纳率:0%
帮助的人:34.7万
展开全部
a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式