Advertisement
Guest User

Untitled

a guest
Aug 4th, 2015
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. public class MaxSubArray {
  2.  
  3. public static void main(String[] args) {
  4. int array[] = {10, -9, 4, 5, 90, -19, 19}; // Max sum is 100
  5. //int array[] = {4, -3, 6}; // Max Sum is 7
  6. //int array[] = {-1, -2, -3}; // Max Sum is -1
  7. //int array[] = {1, -2, -3}; // Max Sum is 1
  8. //int array[] = {-4, -3, -6}; // Max Sum is -3
  9. //int array[] = {-6, 0, 5}; // Max Sum is 5
  10. //int array[] = {0, 0, 0}; // Max Sum is 0
  11. int[] maxSubArray = getMaxSubArray(array);
  12. System.out.println(Arrays.toString(maxSubArray));
  13. }
  14.  
  15. // Kadane's Alorithm Variant (Start Index and End Index of Sub Array even for all negative numbers)
  16. private static int[] getMaxSubArray(int[] array) {
  17. if (array == null || array.length == 0) {
  18. return array;
  19. } else {
  20. int startIndex = 0, endIndex = 0;
  21. int maxSoFar = array[0], maxEndingHere = array[0];
  22. for (int i = 1; i < array.length; i++) {
  23. if(maxSoFar < array[i] && array[i] >= maxEndingHere + array[i]) {
  24. maxEndingHere = array[i];
  25. startIndex = i;
  26. endIndex = i;
  27. } else {
  28. maxEndingHere += array[i];
  29. }
  30. if(maxEndingHere > maxSoFar) {
  31. maxSoFar = maxEndingHere;
  32. endIndex = i;
  33. }
  34. }
  35. return Arrays.copyOfRange(array, startIndex, endIndex + 1);
  36. }
  37. }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement