# Find the sum of the first half and second half elements of an array

Last Updated : 27 Mar, 2023

Given an array arr of size N. The task is to find the sum of the first half (N/2) elements and the second half elements (N – N/2) of an array.

Examples:

```Input : arr[] = {20, 30, 60, 10, 25, 15, 40}
Output : 110, 90
Sum of first N/2 elements 20 + 30 + 60 is 110```
```Input : arr[] = {50, 35, 20, 15}
Output : 85, 35```

Approach:

1. Initialize SumFirst and SumSecond as 0.
2. Traverse the given array.
3. Now add elements in SumFirst if the current index is less than N/2 otherwise add in SumSecond.

Below is the implementation of the above approach:

## C

 `// C program to find the sum of the first half elements and` `// second half elements of the array. Function to find find` `// the sum of the first half elements and second half` `// elements of the array.` `#include `   `void` `sum_of_elements(``int` `arr[], ``int` `n)` `{` `    ``int` `sum_of_first = 0, sum_of_second = 0;`   `    ``// adding` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``// adding first half` `        ``if` `(i < n / 2) {` `            ``sum_of_first += arr[i];` `        ``}`   `        ``// adding second half` `        ``else` `{` `            ``sum_of_second += arr[i];` `        ``}` `    ``}`   `    ``// printing answer` `    ``printf``(``"Sum of first half elements is %d\n"``,` `           ``sum_of_first);` `    ``printf``(``"Sum of second half elements is %d\n"``,` `           ``sum_of_second);` `}`   `// Driver code` `int` `main()` `{`   `    ``int` `arr[] = { 20, 30, 60, 10, 25, 15, 40 };`   `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);`   `    ``// function call` `    ``sum_of_elements(arr, n);`   `    ``return` `0;` `}`

## C#

 `// C# program to count pairs` `// whose sum divisible by 'K'` `using` `System;`   `class` `GFG {` `    ``public` `static` `void` `sum_of_elements(``int``[] arr, ``int` `n)` `    ``{`   `        ``int` `sumfirst = 0, sumsecond = 0;`   `        ``for` `(``int` `i = 0; i < n; i++) {`   `            ``// Add elements in first half sum` `            ``if` `(i < n / 2) {` `                ``sumfirst += arr[i];` `            ``}`   `            ``// Add elements in the second half sum` `            ``else` `{` `                ``sumsecond += arr[i];` `            ``}` `        ``}`   `        ``Console.WriteLine(``"Sum of first half elements is "` `                          ``+ sumfirst);`   `        ``Console.WriteLine(``"Sum of second half elements is "` `                          ``+ sumsecond);` `    ``}`   `    ``// Driver code` `    ``static` `public` `void` `Main()` `    ``{` `        ``int``[] arr = { 20, 30, 60, 10, 25, 15, 40 };` `        ``int` `n = arr.Length;`   `        ``// Function call` `        ``sum_of_elements(arr, n);` `    ``}` `}`   `// This code is contributed by nidhiva`

## C++

 `// C++ program to find the sum of the first half` `// elements and second half elements of an array`   `#include ` `using` `namespace` `std;`   `// Function to find the sum of the first half` `// elements and second half elements of an array` `void` `sum_of_elements(``int` `arr[], ``int` `n) {` `  `  `    ``int` `sumfirst = 0, sumsecond = 0;`   `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``// Add elements in first half sum` `        ``if` `(i < n / 2)` `            ``sumfirst += arr[i];`   `        ``// Add elements in the second half sum` `        ``else` `            ``sumsecond += arr[i];` `    ``}`   `    ``cout << ``"Sum of first half elements is "` `<< sumfirst` `         ``<< endl;`   `    ``cout << ``"Sum of second half elements is "` `<< sumsecond` `         ``<< endl;` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `arr[] = { 20, 30, 60, 10, 25, 15, 40 };`   `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);`   `    ``// Function call` `    ``sum_of_elements(arr, n);`   `    ``return` `0;` `}`

## Java

 `// Java program to count pairs` `// whose sum divisible by 'K'`   `import` `java.util.*;`   `class` `GFG {`   `    ``public` `static` `void` `sum_of_elements(``int``[] arr, ``int` `n)` `    ``{` `        ``int` `sumfirst = ``0``, sumsecond = ``0``;`   `        ``for` `(``int` `i = ``0``; i < n; i++) {`   `            ``// Add elements in first half sum` `            ``if` `(i < n / ``2``) {` `                ``sumfirst += arr[i];` `            ``}`   `            ``// Add elements in the second half sum` `            ``else` `{` `                ``sumsecond += arr[i];` `            ``}` `        ``}`   `        ``System.out.println(``"Sum of first half elements is "` `                           ``+ sumfirst);`   `        ``System.out.println(``"Sum of second half elements is "` `                           ``+ sumsecond);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int``[] arr = { ``20``, ``30``, ``60``, ``10``, ``25``, ``15``, ``40` `};` `        ``int` `n = arr.length;`   `        ``// Function call` `        ``sum_of_elements(arr, n);` `    ``}` `}`   `// This code is contributed by Princi Singh`

## Python3

 `# Python3 program to find the sum of` `# the first half elements and` `# second half elements of an array`   `# Function to find the sum of` `# the first half elements and` `# second half elements of an array`     `def` `sum_of_elements(arr, n):`   `    ``sumfirst ``=` `0` `    ``sumsecond ``=` `0`   `    ``for` `i ``in` `range``(n):`   `        ``# Add elements in first half sum` `        ``if` `(i < n ``/``/` `2``):` `            ``sumfirst ``+``=` `arr[i]`   `        ``# Add elements in the second half sum` `        ``else``:` `            ``sumsecond ``+``=` `arr[i]`   `    ``print``(``"Sum of first half elements is"``,` `          ``sumfirst, end``=``"\n"``)` `    ``print``(``"Sum of second half elements is"``,` `          ``sumsecond, end``=``"\n"``)`     `# Driver Code` `arr ``=` `[``20``, ``30``, ``60``, ``10``, ``25``, ``15``, ``40``]`   `n ``=` `len``(arr)`   `# Function call` `sum_of_elements(arr, n)`   `# This code is contributed` `# by Akanksha Rai`

## Javascript

 ``

Output:

```Sum of first half elements is 110
Sum of second half elements is 90```

Time complexity: O(N), as we are using a loop to traverse the array.
Auxiliary Space: O(1), as we are not using any extra space.

Approach 2: Traversing half of the array length.

The idea is to traverse half the length of the array and calculate the first sum and second sum simultaneously by

1. Initializing firstSum=0 and LastSum=0 and also traversing the array starting from the 0th index to N/2.
2. Adding values of arr[i] to the firstSum.
3. Adding values of arr[i+n/2] to the secondSum.
4. An edge case occurs when the length of the array is odd. In this case, the first sum has the sum of the first N/2 elements while secondSum has the sum of the remaining elements excluding the last element (since the loop runs for n/2 times the last element is excluded) Hence we take care of this exclusively.

Below is the code for the same.

## C#

 `// c# code to find the sum of first n/2 and last n- n/2` `// elements of an array by traversing the array length/2` `// times` `using` `System;`   `public` `class` `GFG {` `    ``public` `static` `void` `Main()` `    ``{` `        ``int``[] arr = { 20, 30, 60, 10, 25, 15, 40 };` `        ``int` `n = arr.Length;`   `        ``// Function call` `        ``sum(arr, n);` `    ``}` `    ``// function definition` `    ``public` `static` `void` `sum(``int``[] arr, ``int` `n)` `    ``{` `        ``int` `firstSum = 0, secondSum = 0;` `        ``// initializing the firstSum and secondSum variables` `        ``for` `(``int` `i = 0; i < n / 2; i++) {` `            ``// adding elements of the first half to firstSum` `            ``firstSum += arr[i];` `            ``// adding elements of the second half to` `            ``// secondSum` `            ``secondSum += arr[i + n / 2];` `        ``}` `        ``// checking for the odd case length` `        ``if` `(n % 2 != 0)` `            ``secondSum += arr[n - 1];` `        ``// printing the sums` `        ``Console.WriteLine(``"Sum of first half elements is "` `                          ``+ firstSum);` `        ``Console.WriteLine(``"Sum of second half elements is "` `                          ``+ secondSum);` `    ``}` `}`

## C++

 `// c++ code to find the sum of first n/2 and last n- n/2` `// elements of an array by traversing the array length/2` `// times` `#include ` `using` `namespace` `std;`   `// Function definition` `void` `sum(``int` `arr[], ``int` `n)` `{` `    ``int` `firstSum = 0, secondSum = 0;` `    ``// initializing the firstSum and secondSum variables` `    ``for` `(``int` `i = 0; i < n / 2; i++) {` `        ``// adding elements of the first half to firstSum` `        ``firstSum += arr[i];` `        ``// adding elements of the second half to secondSum` `        ``secondSum += arr[i + n / 2];` `    ``}` `    ``// checking for the odd case length` `    ``if` `(n % 2 != 0)` `        ``secondSum += arr[n - 1];` `    ``// printing the sums` `    ``cout << ``"Sum of first half elements is "` `<< firstSum` `         ``<< endl;`   `    ``cout << ``"Sum of second half elements is "` `<< secondSum` `         ``<< endl;` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `arr[] = { 20, 30, 60, 10, 25, 15, 40 };`   `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);`   `    ``// Function call` `    ``sum(arr, n);`   `    ``return` `0;` `}`

## Java

 `// Java code to find the sum of first n/2 and last n- n/2` `// elements of an array by traversing the array length/2` `// times` `import` `java.util.*;`   `public` `class` `Main {` `    ``// Function definition` `    ``static` `void` `sum(``int` `arr[], ``int` `n)` `    ``{` `        ``int` `firstSum = ``0``, secondSum = ``0``;` `        ``// initializing the firstSum and secondSum variables` `        ``for` `(``int` `i = ``0``; i < n / ``2``; i++) {` `            ``// adding elements of the first half to firstSum` `            ``firstSum += arr[i];` `            ``// adding elements of the second half to` `            ``// secondSum` `            ``secondSum += arr[i + n / ``2``];` `        ``}` `        ``// checking for the odd case length` `        ``if` `(n % ``2` `!= ``0``)` `            ``secondSum += arr[n - ``1``];` `        ``// printing the sums` `        ``System.out.println(``"Sum of first half elements is "` `                           ``+ firstSum);` `        ``System.out.println(``"Sum of second half elements is "` `                           ``+ secondSum);` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `arr[] = { ``20``, ``30``, ``60``, ``10``, ``25``, ``15``, ``40` `};` `        ``int` `n = arr.length;` `        ``// Function call` `        ``sum(arr, n);` `    ``}` `}`

## Python

 `# python code to find the sum of first n/2 and last n- n/2` `# elements of an array by traversing the array length/2` `# times` `# function definition`     `def` `sum``(arr, n):` `    ``first_sum, second_sum ``=` `0``, ``0` `    ``# initializing the first_sum and second_sum variables` `    ``for` `i ``in` `range``(n ``/``/` `2``):` `        ``# adding elements of the first half to first_sum` `        ``first_sum ``+``=` `arr[i]` `        ``# adding elements of the second half to second_sum` `        ``second_sum ``+``=` `arr[i ``+` `n ``/``/` `2``]` `    ``# checking for the odd case length` `    ``if` `n ``%` `2` `!``=` `0``:` `        ``second_sum ``+``=` `arr[n ``-` `1``]` `    ``# printing the sums` `    ``print``(``'Sum of first half elements is'``, first_sum)` `    ``print``(``"Sum of second half elements is"``, second_sum)`     `# Driver Code` `arr ``=` `[``20``, ``30``, ``60``, ``10``, ``25``, ``15``, ``40``]` `n ``=` `len``(arr)` `# Function call` `sum``(arr, n)`

## Javascript

 `// JavaScript code to find the sum of first n/2 and last n- n/2` `// elements of an array by traversing the array length/2` `// times`   `// Function definition` `function` `sum(arr, n) {` `    ``let firstSum = 0, secondSum = 0;` `    ``// initializing the firstSum and secondSum variables` `    ``for` `(let i = 0; i < Math.floor(n / 2); i++) {` `        ``// adding elements of the first half to firstSum` `        ``firstSum += arr[i];` `        ``// adding elements of the second half to secondSum` `        ``secondSum += arr[i + Math.floor(n / 2)];` `    ``}` `    ``// checking for the odd case length` `    ``if` `(n % 2 !== 0)` `        ``secondSum += arr[n - 1];` `    ``// printing the sums` `    ``console.log(`Sum of first half elements is \${firstSum}`);` `    ``console.log(`Sum of second half elements is \${secondSum}`);` `}`   `// Driver Code` `const arr = [20, 30, 60, 10, 25, 15, 40];`   `const n = arr.length;`   `// Function call` `sum(arr, n);`

Output:

```Sum of first half elements is 110
Sum of second half elements is 90```

Time complexity: O(N/2)
Auxiliary Space: O(1)