From 4e2d751179c420b2996183091f0481360a5ff6ce Mon Sep 17 00:00:00 2001 From: sundaram123krishnan <krishnsundaram@gmail.com> Date: Sun, 16 Apr 2023 18:34:53 +0530 Subject: [PATCH 1/5] added implementatin of kadane's algorithm --- .../kadane's algorithm/kadane_algo.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js diff --git a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js new file mode 100644 index 0000000000..e922b4f5d5 --- /dev/null +++ b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js @@ -0,0 +1,18 @@ +/** + * Simplest Kadane's algorithm implementation. + * + * @param {*[]} array + * @return {number[]} + */ + +export default function kadane() { + let current_sum = array[0]; + let maximum_subarray_sum = array[0]; + + for (let i = 0; i < array.length; i++) { + current_sum = max(current_sum + array[i], array[i]); + maximum_subarray_sum = max(maximum_subarray_sum, current_sum); + } + + return maximum_subarray_sum; +} From 5bd5f80c7812c8527163b2c6283c72b54822600a Mon Sep 17 00:00:00 2001 From: sundaram123krishnan <krishnsundaram@gmail.com> Date: Sun, 16 Apr 2023 18:47:01 +0530 Subject: [PATCH 2/5] fixed an error in max function --- .../uncategorized/kadane's algorithm/kadane_algo.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js index e922b4f5d5..0b878d02f8 100644 --- a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js +++ b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js @@ -10,8 +10,8 @@ export default function kadane() { let maximum_subarray_sum = array[0]; for (let i = 0; i < array.length; i++) { - current_sum = max(current_sum + array[i], array[i]); - maximum_subarray_sum = max(maximum_subarray_sum, current_sum); + current_sum = Math.max(current_sum + array[i], array[i]); + maximum_subarray_sum = Math.max(maximum_subarray_sum, current_sum); } return maximum_subarray_sum; From d64102563dca097d9e1ea36b3681d4aea9d62e45 Mon Sep 17 00:00:00 2001 From: sundaram123krishnan <krishnsundaram@gmail.com> Date: Sun, 16 Apr 2023 18:50:48 +0530 Subject: [PATCH 3/5] the search goes from 1 to array.length --- src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js index 0b878d02f8..c45b88c62f 100644 --- a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js +++ b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js @@ -9,7 +9,7 @@ export default function kadane() { let current_sum = array[0]; let maximum_subarray_sum = array[0]; - for (let i = 0; i < array.length; i++) { + for (let i = 1; i < array.length; i++) { current_sum = Math.max(current_sum + array[i], array[i]); maximum_subarray_sum = Math.max(maximum_subarray_sum, current_sum); } From b51df2bc1201b99d28dc73bb561d75cef750fe3e Mon Sep 17 00:00:00 2001 From: sundaram123krishnan <krishnsundaram@gmail.com> Date: Sun, 16 Apr 2023 19:02:15 +0530 Subject: [PATCH 4/5] added explanations --- .../kadane's algorithm/kadane_algo.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js index c45b88c62f..af781f7575 100644 --- a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js +++ b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js @@ -6,11 +6,25 @@ */ export default function kadane() { + + + + // This algorithm works for both positive and negative values of the array + let current_sum = array[0]; let maximum_subarray_sum = array[0]; for (let i = 1; i < array.length; i++) { + + /* + * Continue the subarray sum or start a new + * subarray sum beginning at the current element. + */ + current_sum = Math.max(current_sum + array[i], array[i]); + + // Stores the maximum subarray sum at each iteration. + maximum_subarray_sum = Math.max(maximum_subarray_sum, current_sum); } From 65ecad80af70b9dd8847dbce5a168d9566f47b79 Mon Sep 17 00:00:00 2001 From: sundaram123krishnan <krishnsundaram@gmail.com> Date: Sun, 16 Apr 2023 23:06:14 +0530 Subject: [PATCH 5/5] Fixed function parameters --- src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js index af781f7575..abdebcf7bb 100644 --- a/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js +++ b/src/algorithms/uncategorized/kadane's algorithm/kadane_algo.js @@ -5,9 +5,10 @@ * @return {number[]} */ -export default function kadane() { +export default function Kadane(array) { + // This algorithm works for both positive and negative values of the array