Programming Algorithm-two numeric codes for sum of s (C)
Two numeric codes for sum (C)
Question: enter an incremental sorting array and a number s to search for two numbers in the array so that their sum is exactly s.
If there are multiple pairs of numbers and the sum is equal to s, output any pair.
Sort Array, You canBoth ends (maximum and minimum)Start searching. When the sum is greater than, the frontend is reduced. When the sum is smaller than the sum, the tail end is increased progressively.
Time complexity O (n).
Code:
/* * main.cpp * * Created on: 2014.6.12 * Author: Spike *//*eclipse cdt, gcc 4.8.1*/#include
#include
#include
bool FindNumbersWithSum(int data[], int length, int sum, int* num1, int* num2){bool found = false;if (length<1 || num1==NULL || num2 == NULL)return found;int ahead = length-1;int behind = 0;while (ahead > behind) {long curSum = data[ahead] + data[behind];if (curSum == sum) {*num1 = data[behind];*num2 = data[ahead];found = true;break;} else if (curSum < sum)++behind;else--ahead;}return found;}int main(void){int data[] = {1, 2, 4, 7, 11, 15};int num1, num2;if (!FindNumbersWithSum(data, 6, 15, &num1, &num2))printf(Error);printf(num1 = %d num2 = %d, num1, num2);}
Output:
num1 = 4 num2 = 11