chensheng@biheap.com:~$

Smallest Sum Contiguous Subarray

// Java program to print smallest
// contiguous array sum 
class GFG { 

	static void minSubArraySum(int a[], int size) 
	{ 
		int min_so_far = Integer.MAX_VALUE, 
		    min_ending_here = 0,start = 0, 
		    end = 0, s = 0; 

		for (int i = 0; i < size; i++) 
		{ 
			min_ending_here += a[i]; 

			if (min_so_far < min_ending_here) 
			{ 
				min_so_far = min_ending_here; 
				start = s; 
				end = i; 
			} 

			if (min_ending_here < 0) 
			{ 
				min_ending_here = 0; 
				s = i + 1; 
			} 
		} 
		System.out.println("Maximum contiguous sum is "
				+ min_so_far); 
		System.out.println("Starting index " + start); 
		System.out.println("Ending index " + end); 
	} 

	// Driver code 
	public static void main(String[] args) 
	{ 
		int a[] = { -2, -3, 4, -1, -2, 1, 5, -3 }; 
		int n = a.length; 
		minSubArraySum(a, n); 
	} 
} 

// This code is contributed by prerna saini