From 9f853b8d91a55bf0bbf35ad364169b62f2259101 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 14:32:32 +0530 Subject: [PATCH 01/16] Create kadane.py --- allalgorithms/subarray/kadane.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 allalgorithms/subarray/kadane.py diff --git a/allalgorithms/subarray/kadane.py b/allalgorithms/subarray/kadane.py new file mode 100644 index 0000000..36f3789 --- /dev/null +++ b/allalgorithms/subarray/kadane.py @@ -0,0 +1,14 @@ +# Algorithm for Kadane's max sum contigious subarray + +def maxsum_subarray(arr): + curr = arr[0] + maxx = arr[0] + n = len(arr) + + for i in range(1,n): + curr = max(arr[i],curr+arr[i]) + maxx = max(curr,maxx) + + return maxx + + From a8cf0a2ca46b5c00e4065888fb7e26a7b23457f2 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 14:41:10 +0530 Subject: [PATCH 02/16] Update kadane.py --- allalgorithms/subarray/kadane.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/allalgorithms/subarray/kadane.py b/allalgorithms/subarray/kadane.py index 36f3789..a878b84 100644 --- a/allalgorithms/subarray/kadane.py +++ b/allalgorithms/subarray/kadane.py @@ -1,4 +1,14 @@ # Algorithm for Kadane's max sum contigious subarray +# -*- coding: UTF-8 -*- +# +# Merge Sort Algorithm +# The All ▲lgorithms library for python +# +# Contributed by: Kunal Keshav Singh Sahni +# Github: @kunal768 +# + +import sys def maxsum_subarray(arr): curr = arr[0] @@ -12,3 +22,24 @@ def maxsum_subarray(arr): return maxx +def returnArray(arr): + size = len(arr) + max_so_far = -sys.maxsize - 1 + max_ending_here = 0 + start = 0 + end = 0 + s = 0 + for i in range(0,size): + + max_ending_here += arr[i] + + if max_so_far < max_ending_here: + max_so_far = max_ending_here + start = s + end = i + + if max_ending_here < 0: + max_ending_here = 0 + s = i+1 + + return [max_so_far,arr[start:end+1]] From 0b7cbcfcf2edb6062275cb3a69c35e7cbf793c1c Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 14:49:31 +0530 Subject: [PATCH 03/16] added test cases --- tests/test_kadane.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/test_kadane.py diff --git a/tests/test_kadane.py b/tests/test_kadane.py new file mode 100644 index 0000000..14ee4b4 --- /dev/null +++ b/tests/test_kadane.py @@ -0,0 +1,20 @@ +import unittest + +from allalgorithms.subarray import kadane + +class TestSearches(unittest.TestCase): + + def test_returnArray(self): + self.assertEqual( [11,[2,3,-1,7]], binary_search([2,3,-1,7])) + self.assertEqual([5,[2,3]], binary_search([2,3,-2,4])) + self.assertEqual([0, [0]], binary_search([-1,-1,-0,0])) + self.assertEqual([-1, [-1]], binary_search([-1])) + + def test_maxsum_subarray(self): + self.assertEqual( 11,, binary_search([2,3,-1,7])) + self.assertEqual(5, binary_search([2,3,-2,4])) + self.assertEqual(0, binary_search([-1,-1,-0,0])) + self.assertEqual(-1, binary_search([-1])) + +if __name__ == '__main__': + unittest.main() From 5f09974e74f1139fe57f96e94b0afdc5a69d471d Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 14:58:42 +0530 Subject: [PATCH 04/16] Create kadane.md --- docs/subarray/kadane.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 docs/subarray/kadane.md diff --git a/docs/subarray/kadane.md b/docs/subarray/kadane.md new file mode 100644 index 0000000..ef387b6 --- /dev/null +++ b/docs/subarray/kadane.md @@ -0,0 +1,36 @@ +# Kadane's Algorithm + +Kadane’s algorithm is to look for all positive contiguous segments of the array (max_ending_here is used for this). And keep track of maximum sum contiguous segment among all positive segments (max_so_far is used for this) Each time we get a positive sum compare it with max_so_far and update max_so_far if it is greater than max_so_far +## Install + +``` +pip install allalgorithms +``` + +## Usage + +```py +from allalgorithms.subarray import kadane + +arr = [-2, 1, 2, 7, 10, 77] + +print(kadane.maxsum_subarray(arr)) +# -> 97 + +print(kadane.returnArray(arr)) +# -> [97, [1, 2, 7, 10, 77]] +``` + +## API + +### maxsum_subarray(array) + +> Return sum of maximum contigious subarray + +### returnArray(array) + +> Return sum along with the respective subarray + +##### Params: + +- `array`: Array (may contain negative elements) From 2f43454a189bb0c1848737102b340af40290b976 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 15:00:11 +0530 Subject: [PATCH 05/16] Update readme.md --- readme.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 9929e55..89b7c6a 100644 --- a/readme.md +++ b/readme.md @@ -69,10 +69,15 @@ print(binary_search(arr, 3)) - [Merge Sort](https://python.allalgorithms.com/sorting/merge-sort) - [Pigeonhole Sort](https://python.allalgorithms.com/sorting/pigeonhole-sort) - [Selection Sort](https://python.allalgorithms.com/sorting/selection-sort) - - [Stooge Sort](https://python.allalgorithms.com/sorting/stooge-sort) + - [Stooge Sort](https://python.allalgorithms.com/sorting/stooge-sor + - ### String - [Palindrome Check](https://python.allalgorithms.com/string/palindrom-check) +- ### Subarray + - [Kadane's Algorithm](https://python.allalgorithms.com/subarray/kadane) + + # Related - [allalgorithms-javascript](https://github.com/abranhe/allalgorithms-javascript): All ▲lgorithms Javascript library From 27de68e6da0deaf91c0e14b8500379b4de793c15 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 15:01:26 +0530 Subject: [PATCH 06/16] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 89b7c6a..71c5d38 100644 --- a/readme.md +++ b/readme.md @@ -75,7 +75,7 @@ print(binary_search(arr, 3)) - [Palindrome Check](https://python.allalgorithms.com/string/palindrom-check) - ### Subarray - - [Kadane's Algorithm](https://python.allalgorithms.com/subarray/kadane) + - [Kadane's Algorithm](https://github.com/kunal768/allalgorithms-python/blob/master/allalgorithms/subarray/kadane.py) # Related From 58d5b5b0d6a40802399298ad4d4fd4bbac1ad452 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 19:51:50 +0530 Subject: [PATCH 07/16] Update readme.md --- docs/readme.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/readme.md b/docs/readme.md index 9929e55..71c5d38 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -69,10 +69,15 @@ print(binary_search(arr, 3)) - [Merge Sort](https://python.allalgorithms.com/sorting/merge-sort) - [Pigeonhole Sort](https://python.allalgorithms.com/sorting/pigeonhole-sort) - [Selection Sort](https://python.allalgorithms.com/sorting/selection-sort) - - [Stooge Sort](https://python.allalgorithms.com/sorting/stooge-sort) + - [Stooge Sort](https://python.allalgorithms.com/sorting/stooge-sor + - ### String - [Palindrome Check](https://python.allalgorithms.com/string/palindrom-check) +- ### Subarray + - [Kadane's Algorithm](https://github.com/kunal768/allalgorithms-python/blob/master/allalgorithms/subarray/kadane.py) + + # Related - [allalgorithms-javascript](https://github.com/abranhe/allalgorithms-javascript): All ▲lgorithms Javascript library From 5731fd81717611fbe6718b2affcb9381a8283cfd Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 19:55:17 +0530 Subject: [PATCH 08/16] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 71c5d38..777609b 100644 --- a/readme.md +++ b/readme.md @@ -69,7 +69,7 @@ print(binary_search(arr, 3)) - [Merge Sort](https://python.allalgorithms.com/sorting/merge-sort) - [Pigeonhole Sort](https://python.allalgorithms.com/sorting/pigeonhole-sort) - [Selection Sort](https://python.allalgorithms.com/sorting/selection-sort) - - [Stooge Sort](https://python.allalgorithms.com/sorting/stooge-sor + - [Stooge Sort](https://python.allalgorithms.com/sorting/stooge-sort) - ### String - [Palindrome Check](https://python.allalgorithms.com/string/palindrom-check) From cb28675a2293854609d78273ff0c54a12e18f649 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Wed, 2 Oct 2019 20:27:42 +0530 Subject: [PATCH 09/16] Update kadane.py --- allalgorithms/subarray/kadane.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/allalgorithms/subarray/kadane.py b/allalgorithms/subarray/kadane.py index a878b84..c4202f9 100644 --- a/allalgorithms/subarray/kadane.py +++ b/allalgorithms/subarray/kadane.py @@ -1,7 +1,6 @@ -# Algorithm for Kadane's max sum contigious subarray # -*- coding: UTF-8 -*- # -# Merge Sort Algorithm +# Kadane's Algorithm # The All ▲lgorithms library for python # # Contributed by: Kunal Keshav Singh Sahni From 57d56553915ff8a6ffabfbaf50c7e214e3c89b77 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 21:48:06 +0530 Subject: [PATCH 10/16] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 777609b..c9429b0 100644 --- a/readme.md +++ b/readme.md @@ -75,7 +75,7 @@ print(binary_search(arr, 3)) - [Palindrome Check](https://python.allalgorithms.com/string/palindrom-check) - ### Subarray - - [Kadane's Algorithm](https://github.com/kunal768/allalgorithms-python/blob/master/allalgorithms/subarray/kadane.py) + - [Kadane's Algorithm](https://python.allalgorithms.com/subarray/kadane) # Related From d1550b52673c66bc913e146d7dd30b3e4ae63b67 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 21:50:53 +0530 Subject: [PATCH 11/16] Create __init__.py --- allalgorithms/subarray/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 allalgorithms/subarray/__init__.py diff --git a/allalgorithms/subarray/__init__.py b/allalgorithms/subarray/__init__.py new file mode 100644 index 0000000..393ff54 --- /dev/null +++ b/allalgorithms/subarray/__init__.py @@ -0,0 +1 @@ +from .kadane import * From 32730bec3c3bff1219c6d2f3089e263c2a058aaf Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 21:56:22 +0530 Subject: [PATCH 12/16] Update test_kadane.py --- tests/test_kadane.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_kadane.py b/tests/test_kadane.py index 14ee4b4..88f06d1 100644 --- a/tests/test_kadane.py +++ b/tests/test_kadane.py @@ -11,7 +11,7 @@ def test_returnArray(self): self.assertEqual([-1, [-1]], binary_search([-1])) def test_maxsum_subarray(self): - self.assertEqual( 11,, binary_search([2,3,-1,7])) + self.assertEqual(11,binary_search([2,3,-1,7])) self.assertEqual(5, binary_search([2,3,-2,4])) self.assertEqual(0, binary_search([-1,-1,-0,0])) self.assertEqual(-1, binary_search([-1])) From b7f3c53b8d5116af2e5f8f96fd460cf3187a9bcf Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:00:42 +0530 Subject: [PATCH 13/16] Update test_kadane.py --- tests/test_kadane.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/test_kadane.py b/tests/test_kadane.py index 88f06d1..698481a 100644 --- a/tests/test_kadane.py +++ b/tests/test_kadane.py @@ -1,17 +1,16 @@ import unittest - from allalgorithms.subarray import kadane class TestSearches(unittest.TestCase): - + def test_returnArray(self): self.assertEqual( [11,[2,3,-1,7]], binary_search([2,3,-1,7])) self.assertEqual([5,[2,3]], binary_search([2,3,-2,4])) self.assertEqual([0, [0]], binary_search([-1,-1,-0,0])) self.assertEqual([-1, [-1]], binary_search([-1])) - + def test_maxsum_subarray(self): - self.assertEqual(11,binary_search([2,3,-1,7])) + self.assertEqual(11,binary_search([2,3,-1,7])) self.assertEqual(5, binary_search([2,3,-2,4])) self.assertEqual(0, binary_search([-1,-1,-0,0])) self.assertEqual(-1, binary_search([-1])) From 2e0467466347fd0add9eac58e54aa0da041001e0 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:03:50 +0530 Subject: [PATCH 14/16] Update test_kadane.py --- tests/test_kadane.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/test_kadane.py b/tests/test_kadane.py index 698481a..22e1952 100644 --- a/tests/test_kadane.py +++ b/tests/test_kadane.py @@ -1,19 +1,19 @@ import unittest + from allalgorithms.subarray import kadane class TestSearches(unittest.TestCase): - def test_returnArray(self): - self.assertEqual( [11,[2,3,-1,7]], binary_search([2,3,-1,7])) - self.assertEqual([5,[2,3]], binary_search([2,3,-2,4])) - self.assertEqual([0, [0]], binary_search([-1,-1,-0,0])) - self.assertEqual([-1, [-1]], binary_search([-1])) - + self.assertEqual( [11,[2,3,-1,7]], returnArray([2,3,-1,7])) + self.assertEqual([5,[2,3]], returnArray([2,3,-2,4])) + self.assertEqual([0, [0]], returnArray([-1,-1,-0,0])) + self.assertEqual([-1, [-1]], returnArray([-1])) + def test_maxsum_subarray(self): - self.assertEqual(11,binary_search([2,3,-1,7])) - self.assertEqual(5, binary_search([2,3,-2,4])) - self.assertEqual(0, binary_search([-1,-1,-0,0])) - self.assertEqual(-1, binary_search([-1])) + self.assertEqual(11,maxsum_subarray([2,3,-1,7])) + self.assertEqual(5, maxsum_subarray([2,3,-2,4])) + self.assertEqual(0, maxsum_subarray([-1,-1,-0,0])) + self.assertEqual(-1, maxsum_subarray([-1])) if __name__ == '__main__': unittest.main() From faae893c7f86bb427e1b6e0b7b65591c7cd5b6c2 Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:07:44 +0530 Subject: [PATCH 15/16] Update test_kadane.py --- tests/test_kadane.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_kadane.py b/tests/test_kadane.py index 22e1952..1b92ab7 100644 --- a/tests/test_kadane.py +++ b/tests/test_kadane.py @@ -1,6 +1,6 @@ import unittest -from allalgorithms.subarray import kadane +from allalgorithms.kadane import * class TestSearches(unittest.TestCase): def test_returnArray(self): From 73ab13e7ac7964057a79aea5a165d5f331bc7f5e Mon Sep 17 00:00:00 2001 From: kunal768 <33108756+kunal768@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:23:26 +0530 Subject: [PATCH 16/16] Update test_kadane.py --- tests/test_kadane.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/test_kadane.py b/tests/test_kadane.py index 1b92ab7..63da946 100644 --- a/tests/test_kadane.py +++ b/tests/test_kadane.py @@ -1,19 +1,19 @@ import unittest -from allalgorithms.kadane import * +from allalgorithms.subarray import kadane class TestSearches(unittest.TestCase): def test_returnArray(self): - self.assertEqual( [11,[2,3,-1,7]], returnArray([2,3,-1,7])) - self.assertEqual([5,[2,3]], returnArray([2,3,-2,4])) - self.assertEqual([0, [0]], returnArray([-1,-1,-0,0])) - self.assertEqual([-1, [-1]], returnArray([-1])) + self.assertEqual( [11,[2,3,-1,7]], kadane.returnArray([2,3,-1,7])) + self.assertEqual([5,[2,3]], kadane.returnArray([2,3,-2,4])) + self.assertEqual([0, [0]], kadane.returnArray([-1,-1,-0,0])) + self.assertEqual([-1, [-1]], kadane.returnArray([-1])) def test_maxsum_subarray(self): - self.assertEqual(11,maxsum_subarray([2,3,-1,7])) - self.assertEqual(5, maxsum_subarray([2,3,-2,4])) - self.assertEqual(0, maxsum_subarray([-1,-1,-0,0])) - self.assertEqual(-1, maxsum_subarray([-1])) + self.assertEqual(11,kadane.maxsum_subarray([2,3,-1,7])) + self.assertEqual(5, kadane.maxsum_subarray([2,3,-2,4])) + self.assertEqual(0, kadane.maxsum_subarray([-1,-1,-0,0])) + self.assertEqual(-1, kadane.maxsum_subarray([-1])) if __name__ == '__main__': unittest.main() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy