Largest Sum Contigous SubArray in C
Largest Sum Contiguous Sub-Array
Here, in this page we will discuss the C program to find the largest sum contiguous Sub-array . We use Kadane’s algorithm, which runs in O(n) time.
The idea is to keep scanning through the array and calculating the maximum sub-array that ends at every position.
Largest Sum Contiguous Sub-Array in C
The Largest Sum Contiguous Subarray is a problem in computer science where we need to find the subarray in a given array that has the maximum sum of its elements. In other words, we are looking for a contiguous subarray in the given array whose sum is maximum.
For example, consider the following array:
arr = [-2, -3, 4, -1, -2, 1, 5, -3]
The largest sum contiguous subarray in this array is [4, -1, -2, 1, 5], which has a sum of 7.
The problem of finding the largest sum contiguous subarray has a well-known algorithm called Kadane’s algorithm. The algorithm has a time complexity of O(n) and can be easily implemented in C.
Algorithm:
Create two intermediate variables max_ending_here and max_so_far.
Initialized these two intermediate variables using the 0.
Traverse the array from 0 to N-1 and calculate the max_ending_here and max_so_far.
- Now we will keep max_so_far which indicates the maximum sum found so far.
C code for largest sum contiguous sub-array
#include <stdio.h>
#define ARRAY_SIZE(a) sizeof(a)/sizeof(a[0])
int maxSubArraySum (int arr[], int n)
{
int i = 0;
int max_so_far = 0;
int max_ending_here = 0;
for (i = 0; i < n; i++)
{
max_ending_here = max_ending_here + arr[i];
if (max_ending_here < 0)
{
max_ending_here = 0;
}
if (max_so_far < max_ending_here)
{
max_so_far = max_ending_here;
}
}
return max_so_far;
}
int main ()
{
int arr[] = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };
int arr_size = ARRAY_SIZE (arr);
const int maxSum = maxSubArraySum (arr, arr_size);
printf ("Largest Sum Contiguous Sub-Array : %d ", maxSum);
return 0;
}
Output
Largest Sum Contiguous Sub-Array : 6

Login/Signup to comment