您的位置:首页 > 其它

查找数组中两个数,它们的和与数组中某个数字相等

2011-08-27 22:52 232 查看
 怀念对算法的酷爱,决定搜集网上的算法题目,并持之以恒练习之

/*
输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。
如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1,5,4,7,18,25,37,44 和数字25。由于7+18=25,因此输出7 和18。
*/
class Program
{
static void Main(string[] args)
{
int x, y;
int[] items = { 1,5,4,7,18,25,37,44 };
FindTwoNumbers(items, 25, out x, out y);
Console.WriteLine("第一个数字是:{0}", x);
Console.WriteLine("第二个数字是:{0}", y);
/*
* * 输出结果 * *
*
第一个数字是:7
第二个数字是:18
*
*/
}

static void FindTwoNumbers(int[] items,int sum, out int x, out int y)
{
x = -1;
y = -1;
int start = 0;
int end = items.Length - 1;
//利用while循环,控制时间复杂度为0(n)
while (end > start)
{
int sortSum = items[start] + items[end];
if (sum == sortSum)
{
x = items[start];
y = items[end];
break;
}
else if (sum > sortSum)
{
start++;
}
else
{
end--;
}
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐