Skip to main content

Kadane's Algorithm | The-Algorithm-Drive | MyCodingNetwork

Kadane's Algorithm

Kadane’s algorithm is used to find largest contagious subarray sum for a given array. It is one of the most common types of algorithms used to find the subarray with largest sum. The time complexity of this algorithm is O(N).


    Output:  

     

Code Explanation:

On line 4, there’s an int array variable a[ ], which is the array on which we have to perform our task. We have stored the value of the array, in variable l.

cur_max, is a temporary variable for traversing the array and storing positive sum occurring and update it after each iteration. global_max, is a variable for storing the highest sum of subarray. ‘start’ variable stores the starting index of the desired subarray and ‘end’ variable stores the last index of that subarray, that is, contagious subarray with the highest sum.

Working:

Talking about the working of this algorithm, it uses one for loop and the entire operation can be performed in just one traversal of the array. One of the limitations of this algorithm is that it needs at least one positive number in the array otherwise it will not work.


Algorithm:

1.   Start

2.   Declare an array with at least one positive number.

3.   Declare two counter variables, first, cur_max for current sum and the other global_max for global sum. The variable global_max will be initialized with minimum integer value. The variable global_max will store largest sum of the required subarray.

4.   Declare a for loop starting from the first index and terminating at the last index. Inside the for loop,

cur_max += a[i]

if(cur_max>global_max)

{

global_max=cur_max

}

if (cur_max<0)

{

cur_max=0

}

End of for loop

 

Variable cur_max is used to add the elements of the array at each iteration and compare it with the value of global_max at each iteration. If the value of global_max is less than cur_max then assign it with the value of cur_max. If the value of cur_max is less than 0 then assign cur_max with the value 0.

5.   The value stored in the global_max variable is the output of our program.

   

Hope you liked this explanation, for any doubt or feedback you can comment down in the comment section.

Popular posts from this blog

Exploring Uninformed Search in Artificial Intelligence: Basics and Applications

  In artificial intelligence (AI), search algorithms are essential for solving a variety of problems, from navigating a maze to scheduling tasks. Uninformed search, also known as blind search, is a fundamental category of search techniques where the algorithm has no additional information about the states beyond what is provided in the problem definition to guide the search. This page delves into the basics of uninformed search algorithms, their types, and their applications in AI. Understanding Uninformed Search Uninformed search algorithms explore the search space without any guidance on which paths might lead to the goal more efficiently. They rely solely on the information available from the initial problem setup, such as the start state, goal state, and possible actions. This approach contrasts with informed search algorithms, which utilize heuristics to make more educated guesses about the best path to take. Types of Uninformed Search Algorithms   Several uninformed se...

Artificial Intelligence Playlist

Here's a playlist specifically dedicated to Artificial Intelligence. Make sure to follow it, as a whole lot of new AI videos coming up... 1. Concept of State in AI 2. Uninformed Search in AI 3. Breadth First Search | Part 1 4. Breadth First Seach | Part 2 | Algorithm & Working and many more to come...

Print a Linked List in Reverse Order | Linked List | Java | MyCodingNetwork

  Print a Linked List in Reverse Order After mastering the four standard operations on a Linked List - Creation, Traversal, Insertion, and Deletion - we will now proceed to the next topic: ' Printing a Linked List in Reverse Order '. It serves as a continuation of our previous discussions. We will build upon the topics and ideas that we have previously explored to further our understanding about Linked List. We 'll be using recursive approach for the implementation. For this a separate recursive function would be needed. Concept of stack is also implemented for print statement. Let's discuss the algorithm for the same: Algorithm: Create a function printReverse() , which takes 'head ' of the Linked List as the parameter. Take a temporary node ' cur ' and assign it with the head of the list. Create a base case which checks if cur==null . If base case is TRUE, then function would return . If base case is FALSE, then the statements following that base case ...