Algorithms

Kadane’s Algorithm: How to find the biggest slice of pizza in an array

Kadane’s Algorithm is a popular algorithm for finding the maximum subarray sum in an array of integers. The subarray sum is the sum of the elements in a contiguous subarray of the array. In simpler terms, it is a way to find the largest sum of any continuous subarray in an array.

The idea behind Kadane’s Algorithm is to keep track of the maximum sum that can be obtained up to each index in the array. We can then update the maximum sum by comparing the current maximum with the sum up to the current index.

Here is how Kadane’s Algorithm works:

  1. Initialize two variables, max_so_far, and max_ending_here, to the first element of the array.
  2. Loop through the array from the second element to the end.
  3. For each element, update max_ending_here to be the maximum of either the current element or the sum of the current element and max_ending_here.
  4. Update max_so_far to be the maximum of either max_so_far or max_ending_here.
  5. Return max_so_far as the maximum subarray sum.

Let’s see an example implementation of Kadane’s Algorithm in C#:

public static int MaxSubarraySum(int[] arr) 
{
    int max_so_far = arr[0];
    int max_ending_here = arr[0];

    for (int i = 1; i < arr.Length; i++) 
    {
        max_ending_here = Math.Max(arr[i], max_ending_here + arr[i]);
        max_so_far = Math.Max(max_so_far, max_ending_here);
    }

    return max_so_far;
}

In this implementation, we first initialize max_so_far and max_ending_here to the first element of the array. We then loop through the array from the second element to the end, updating max_ending_here and max_so_far at each iteration. Finally, we return max_so_far as the maximum subarray sum.

Let’s test our implementation with an example array:

int[] arr = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };
int maxSubarraySum = MaxSubarraySum(arr);
Console.WriteLine(maxSubarraySum); // output: 6

In this example, the maximum subarray sum is 6, which corresponds to the subarray [4, -1, 2, 1]. Our implementation correctly computes this maximum subarray sum using Kadane’s Algorithm.

In conclusion, Kadane’s Algorithm is a simple yet effective algorithm for finding the maximum subarray sum in an array of integers. With its O(n) time complexity, it is a fast and efficient solution to this common problem.