Open In App

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

Last Updated : 27 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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 <stdio.h>
 
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 <bits/stdc++.h>
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




<script>
 
// Javascript program to count pairs
// whose sum divisible by 'K'
 
    function sum_of_elements(arr , n)
    {
        var sumfirst = 0, sumsecond = 0;
 
        for (i = 0; i < n; i++) {
 
            // Add elements in first half sum
            if (i < parseInt(n / 2))
            {
                sumfirst += arr[i];
            }
 
            // Add elements in the second half sum
            else {
                sumsecond += arr[i];
            }
        }
 
        document.write(
     "Sum of first half elements is " + sumfirst+"<br/>"
        );
 
        document.write(
    "Sum of second half elements is " + sumsecond+"<br/>"
        );
    }
 
    // Driver code
     
        var arr = [ 20, 30, 60, 10, 25, 15, 40 ];
        var n = arr.length;
 
        // Function call
        sum_of_elements(arr, n);
 
// This code contributed by umadevi9616
 
</script>


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 <bits/stdc++.h>
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)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads