1. 程式人生 > >有序陣列中兩個數的和等於一個輸入值的函式

有序陣列中兩個數的和等於一個輸入值的函式

/*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;
}