这个题的重点在已经按照升序排序的一个数组对其进行操作,怎么样能够通过和来找到对应的两个数字,从头开始找和从尾开始找都会导致如果数字在一边的话会导致不平衡,这样我们就从两边往中间找。下面是代码:
void FindEle(int A[], int n, int sum)
{
int left, right;
left = 0;
right = n - 1;
while(left<right)
{
if(A[left] + A[right] < sum) /*如果相加小于sum则增大当前数据*/
{
left++;
}
else if(A[left] + A[right] > sum) /*如果相加大于sum则减小当前数据*/
{
right--;
}
else /*否则相等,输出结果*/
{
cout<<A[left]<<" and "<<A[right];
return;
}
}
cout<<"Not Found";
return;
}
int main()
{
int A[7] = {1, 2, 3, 4, 5, 6, 7}; /*测试*/
FindEle(A, 7, 5);
return 0;
}