快速找出一个数组a中的两个数字,使这两个数字之和等于一个给定的值,如果存在,则输出这两个数,否则,
输出不存在最好发到邮箱378085831@qq.com如果有周四之前帮弄出来的,悬赏会更高...
输出不存在 最好发到邮箱 378085831@qq.com
如果有周四之前帮弄出来的, 悬赏会更高 展开
如果有周四之前帮弄出来的, 悬赏会更高 展开
4个回答
展开全部
这个好像还简单吧?
用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
返回 找不到就好了
用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
返回 找不到就好了
展开全部
先qsort对数组排序,然后对数组的每个元素,用二分查找去找出其他元素与他的和等于给定值的。
时间复杂度:N*logN + N*logN => N*logN (时间复杂度忽略常数)
对比穷举的时间复杂度N*N
时间复杂度:N*logN + N*logN => N*logN (时间复杂度忽略常数)
对比穷举的时间复杂度N*N
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-20
展开全部
笑而不语- -
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询