From 9b691a3229053260c3570a4ea73015d9d72b5729 Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 22:35:35 +0530 Subject: [PATCH 1/8] Create stooge_sort.py --- algorithms/sort/stooge_sort.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 algorithms/sort/stooge_sort.py diff --git a/algorithms/sort/stooge_sort.py b/algorithms/sort/stooge_sort.py new file mode 100644 index 000000000..1925d5657 --- /dev/null +++ b/algorithms/sort/stooge_sort.py @@ -0,0 +1,34 @@ +''' + +Stooge Sort +Time Complexity : O(n2.709) + +''' + + + +def stoogesort(arr, l, h): + if l >= h: + return + + # If first element is smaller + # than last, swap them + if arr[l]>arr[h]: + t = arr[l] + arr[l] = arr[h] + arr[h] = t + + # If there are more than 2 elements in + # the array + if h-l + 1 > 2: + t = (int)((h-l + 1)/3) + + # Recursively sort first 2 / 3 elements + stoogesort(arr, l, (h-t)) + + # Recursively sort last 2 / 3 elements + stoogesort(arr, l + t, (h)) + + # Recursively sort first 2 / 3 elements + # again to confirm + stoogesort(arr, l, (h-t)) From 5d789dafebc52ee8fe87940ad9160a6b343e65d4 Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 22:37:26 +0530 Subject: [PATCH 2/8] Update stooge_sort.py --- algorithms/sort/stooge_sort.py | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms/sort/stooge_sort.py b/algorithms/sort/stooge_sort.py index 1925d5657..dba387d7e 100644 --- a/algorithms/sort/stooge_sort.py +++ b/algorithms/sort/stooge_sort.py @@ -2,6 +2,7 @@ Stooge Sort Time Complexity : O(n2.709) +Reference: https://www.geeksforgeeks.org/stooge-sort/ ''' From 3e3a157bf7f296ee11697890e5e08a95fc099e11 Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 22:39:08 +0530 Subject: [PATCH 3/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e38640143..54f6c6a44 100644 --- a/README.md +++ b/README.md @@ -284,6 +284,7 @@ If you want to uninstall algorithms, it is as simple as: - [selection_sort](algorithms/sort/selection_sort.py) - [shell_sort](algorithms/sort/shell_sort.py) - [sort_colors](algorithms/sort/sort_colors.py) + - [stooge_sort](algorithms/sort/stooge_sort.py) - [top_sort](algorithms/sort/top_sort.py) - [wiggle_sort](algorithms/sort/wiggle_sort.py) - [stack](algorithms/stack) From 064674324f7422ce84ab2b3fafa33b11af6bcc02 Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 22:39:47 +0530 Subject: [PATCH 4/8] Update __init__.py --- algorithms/sort/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms/sort/__init__.py b/algorithms/sort/__init__.py index fceb3bd22..5a870feff 100644 --- a/algorithms/sort/__init__.py +++ b/algorithms/sort/__init__.py @@ -13,6 +13,7 @@ from .top_sort import * from .bucket_sort import * from .shell_sort import * +from .stooge_sort import * from .radix_sort import * from .gnome_sort import * from .cocktail_shaker_sort import * From 4a83102bb34da58faca42f892a8cf04833142882 Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 23:30:01 +0530 Subject: [PATCH 5/8] Update test_sort.py --- tests/test_sort.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_sort.py b/tests/test_sort.py index 650f33920..619625faf 100644 --- a/tests/test_sort.py +++ b/tests/test_sort.py @@ -13,6 +13,7 @@ selection_sort, bucket_sort, shell_sort, + stooge_sort, radix_sort, gnome_sort, cocktail_shaker_sort, @@ -86,6 +87,10 @@ def test_bucket_sort(self): def test_shell_sort(self): self.assertEqual([1, 5, 23, 57, 65, 1232], shell_sort([1, 5, 65, 23, 57, 1232])) + + def test_stooge_sort(self): + self.assertEqual([1, 5, 23, 57, 65, 1232], + stooge_sort([1, 5, 65, 23, 57, 1232], 0, 5)) def test_radix_sort(self): self.assertEqual([1, 5, 23, 57, 65, 1232], From 2b6778ecbcc8a432649a465ba96ecaf1b5785dda Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 23:34:43 +0530 Subject: [PATCH 6/8] Update stooge_sort.py --- algorithms/sort/stooge_sort.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/algorithms/sort/stooge_sort.py b/algorithms/sort/stooge_sort.py index dba387d7e..b084f04da 100644 --- a/algorithms/sort/stooge_sort.py +++ b/algorithms/sort/stooge_sort.py @@ -33,3 +33,11 @@ def stoogesort(arr, l, h): # Recursively sort first 2 / 3 elements # again to confirm stoogesort(arr, l, (h-t)) + + +if __name__ == "__main__": + array = [1,3,64,5,7,8] + n = len(arr) + stoogesort(arr, 0, n-1) + for i in range(0, n): + print(arr[i], end = ' ') From 775df26e7cf7d67baf14679ab93d174e3df40c4c Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 23:35:18 +0530 Subject: [PATCH 7/8] Update test_sort.py --- tests/test_sort.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/test_sort.py b/tests/test_sort.py index 619625faf..650f33920 100644 --- a/tests/test_sort.py +++ b/tests/test_sort.py @@ -13,7 +13,6 @@ selection_sort, bucket_sort, shell_sort, - stooge_sort, radix_sort, gnome_sort, cocktail_shaker_sort, @@ -87,10 +86,6 @@ def test_bucket_sort(self): def test_shell_sort(self): self.assertEqual([1, 5, 23, 57, 65, 1232], shell_sort([1, 5, 65, 23, 57, 1232])) - - def test_stooge_sort(self): - self.assertEqual([1, 5, 23, 57, 65, 1232], - stooge_sort([1, 5, 65, 23, 57, 1232], 0, 5)) def test_radix_sort(self): self.assertEqual([1, 5, 23, 57, 65, 1232], From 5bd446fe71061d6e421dd20e7e5c688a055c5713 Mon Sep 17 00:00:00 2001 From: Arijit Gupta Date: Wed, 30 Sep 2020 23:38:25 +0530 Subject: [PATCH 8/8] Update stooge_sort.py --- algorithms/sort/stooge_sort.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/algorithms/sort/stooge_sort.py b/algorithms/sort/stooge_sort.py index b084f04da..42f8b3bd4 100644 --- a/algorithms/sort/stooge_sort.py +++ b/algorithms/sort/stooge_sort.py @@ -37,7 +37,7 @@ def stoogesort(arr, l, h): if __name__ == "__main__": array = [1,3,64,5,7,8] - n = len(arr) - stoogesort(arr, 0, n-1) + n = len(array) + stoogesort(array, 0, n-1) for i in range(0, n): - print(arr[i], end = ' ') + print(array[i], end = ' ')