diff --git a/algorithms/C/README.md b/algorithms/C/README.md index f2391b1a..dff5c62c 100644 --- a/algorithms/C/README.md +++ b/algorithms/C/README.md @@ -3,6 +3,7 @@ ## Arrays - [Even and Odd](arrays/even-and-odd.c) +- [Kadane's Algorithm](arrays/kadanes-algorithm.c) - [Unique Elements in an array](arrays/unique-elements-in-an-array.c) - [Reverse an array](arrays/reverse-array.c) - [Shuffle an array](arrays/shuffle_array.c) diff --git a/algorithms/C/arrays/kadanes-algorithm.c b/algorithms/C/arrays/kadanes-algorithm.c new file mode 100644 index 00000000..93c2164c --- /dev/null +++ b/algorithms/C/arrays/kadanes-algorithm.c @@ -0,0 +1,58 @@ +/* +Kadane's Algorithm: Largest Sum Contiguous Subarray + +Task: Find the maximum sum of the contiguous subarray. + +Example 1: + Size: 8 + Array: {-2, -3, 4, -1, -2, 1, 5, -3} + + Here the subarray {4, -1, -2, 1, 5} has the maximum sum of 7 + +Time Complexity: O(N) +*/ + + +#include +#include + + +int maxSubArraySum(int *array,int size) +{ + int bestSum=0,sum=0; + + for(int i=0;isum+array[i]?array[i]:sum+array[i]; + bestSum=bestSum>sum?bestSum:sum; + } + return bestSum; +} + +int main() +{ + int *array=NULL; + int size=0; + + printf("Enter the size of the array: "); + scanf("%d",&size); + + array=(int*)malloc(size*sizeof(int)); + + printf("Enter array elements: "); + for(int i=0;i