码迷,mamicode.com
首页 > 编程语言 > 详细

有序数组中两个数的和等于一个输入值的函数

时间:2015-05-05 14:35:38      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:数组

技术分享题目:

       输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度为O(N).

       如果有多对数字的和等于输入的数字,输出任意一对即可。

       例如输入数组1,2,4,7,11,15和数字15,由于4+11=15,因此输出4和11.


代码如下:


/*data[] 为有序数组,
length 为数组的长度
sum为用户输入的和
num1 为符合和等于sum的第一个数
num2 为第二个数*/
#include<iostream>
using namespace std;


bool FindTwoNumbersWithSum(int data[], unsigned int length, int sum, int& num1, int& num2)
{
bool found = false;
if (length < 1)
return found;
int begin = 0;
int end = length - 1;
while (end > begin)
{
long curSum = data[begin] + data[end];
if (curSum == sum)
{
num1 = data[begin];
num2 = data[end];
found = true;
break;
}
else if (curSum > sum)
end--;
else begin++;
}
return found;
}
int main()
{
int x, y;
int a[6] = { 1, 2, 4, 7, 11, 15 };
if (FindTwoNumbersWithSum(a, 6, 15, x, y))
{
cout << x << endl << y<< endl;
}
return 0;
}

    


有序数组中两个数的和等于一个输入值的函数

标签:数组

原文地址:http://blog.csdn.net/wangfengfan1/article/details/45500107

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!