From 90269673edd491f2c622b58fb0038a92bed1f24e Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Wed, 24 Jan 2024 22:31:09 +0530 Subject: [PATCH 01/19] added ExchangeSort and its testcases --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/java/com/thealgorithms/sorts/ExchangeSort.java diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java new file mode 100644 index 000000000000..e69de29bb2d1 From ff3ebe6417d7daea9aab0d9afd440776c641c2f3 Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Wed, 24 Jan 2024 22:38:29 +0530 Subject: [PATCH 02/19] added test --- src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java diff --git a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java new file mode 100644 index 000000000000..e69de29bb2d1 From e853320716e22ff4611ae87f7df5037ba292a4d9 Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Thu, 25 Jan 2024 01:13:54 +0530 Subject: [PATCH 03/19] test --- .../thealgorithms/sorts/ExchangeSortTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java index e69de29bb2d1..8938be98e147 100644 --- a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java @@ -0,0 +1,41 @@ +package com.thealgorithms.sorts; +// added by @555vedant// + + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import org.junit.jupiter.api.Test; + +public class ExchangeSortTest { + @Test + public void testEmptyArray() { + int[] arr = {}; + int[] expected = {}; + ExchangeSort.exchangeSort(arr); + assertArrayEquals(expected, arr); + } + + @Test + public void testAlreadySortedArray() { + int[] arr = {1, 2, 3, 4, 5}; + int[] expected = {1, 2, 3, 4, 5}; + ExchangeSort.exchangeSort(arr); + assertArrayEquals(expected, arr); + } + + @Test + public void testReverseSortedArray() { + int[] arr = {5, 4, 3, 2, 1}; + int[] expected = {1, 2, 3, 4, 5}; + ExchangeSort.exchangeSort(arr); + assertArrayEquals(expected, arr); + } + + @Test + public void testRandomOrderArray() { + int[] arr = {3, 1, 4, 2, 5}; + int[] expected = {1, 2, 3, 4, 5}; + ExchangeSort.exchangeSort(arr); + assertArrayEquals(expected, arr); + } +} From f6bf822a8f618c75b6d6c4044ac61e82b222b360 Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Thu, 25 Jan 2024 01:31:18 +0530 Subject: [PATCH 04/19] fixed empty file --- .../com/thealgorithms/sorts/ExchangeSort.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index e69de29bb2d1..e2e7572402e9 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -0,0 +1,34 @@ +package com.thealgorithms.sorts; + +import java.util.Arrays; + +public class ExchangeSort { + + public static void exchangeSort(int[] arr) { + int n = arr.length; + + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) { + if (arr[j] > arr[j + 1]) { + // Swap arr[j] and arr[j + 1] + int temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + } + } + } + } + + public static void main(String[] args) { + int[] arr = {12, 45, 23, 67, 10}; + + System.out.println("Original Array: " + Arrays.toString(arr)); + + // Sorting using ExchangeSort + exchangeSort(arr); + + System.out.println("Sorted Array: " + Arrays.toString(arr)); + } +} + + From 478b19bb5b21e29b3539e002bf8f343833443562 Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Sat, 27 Jan 2024 22:57:33 +0530 Subject: [PATCH 05/19] modification in logic --- .../com/thealgorithms/sorts/ExchangeSort.java | 69 ++++++++++++++----- .../thealgorithms/sorts/ExchangeSortTest.java | 41 ++--------- 2 files changed, 54 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index e2e7572402e9..3048e26cfadd 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -1,33 +1,64 @@ package com.thealgorithms.sorts; -import java.util.Arrays; +import static com.thealgorithms.sorts.SortUtils.*; -public class ExchangeSort { +/** + * Exchange Sort (Cocktail Shaker Sort) implementation. + * + * @author 555vedant(Vedant Kasar) + * @see SortAlgorithm + */ +class ExchangeSort implements SortAlgorithm { - public static void exchangeSort(int[] arr) { - int n = arr.length; + /** + * Implements generic exchange sort (Cocktail Shaker Sort) algorithm. + * + * @param array the array to be sorted. + * @param the type of elements in the array. + * @return the sorted array. + */ + @Override + public > T[] sort(T[] array) { + int left = 0; + int right = array.length - 1; - for (int i = 0; i < n - 1; i++) { - for (int j = 0; j < n - i - 1; j++) { - if (arr[j] > arr[j + 1]) { - // Swap arr[j] and arr[j + 1] - int temp = arr[j]; - arr[j] = arr[j + 1]; - arr[j + 1] = temp; + while (left <= right) { + boolean swapped = false; + + // Traverse from left to right + for (int i = left; i < right; ++i) { + if (greater(array[i], array[i + 1])) { + swap(array, i, i + 1); + swapped = true; } } - } - } - public static void main(String[] args) { - int[] arr = {12, 45, 23, 67, 10}; + // If no swap occurred, the array is already sorted + if (!swapped) { + break; + } + + // Move the right boundary one position to the left + --right; - System.out.println("Original Array: " + Arrays.toString(arr)); + // Traverse from right to left + for (int i = right; i > left; --i) { + if (greater(array[i - 1], array[i])) { + swap(array, i - 1, i); + swapped = true; + } + } - // Sorting using ExchangeSort - exchangeSort(arr); + // If no swap occurred, the array is already sorted + if (!swapped) { + break; + } + + // Move the left boundary one position to the right + ++left; + } - System.out.println("Sorted Array: " + Arrays.toString(arr)); + return array; } } diff --git a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java index 8938be98e147..6c4271fa9e19 100644 --- a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java @@ -1,41 +1,8 @@ package com.thealgorithms.sorts; -// added by @555vedant// - -import static org.junit.jupiter.api.Assertions.assertArrayEquals; - -import org.junit.jupiter.api.Test; - -public class ExchangeSortTest { - @Test - public void testEmptyArray() { - int[] arr = {}; - int[] expected = {}; - ExchangeSort.exchangeSort(arr); - assertArrayEquals(expected, arr); - } - - @Test - public void testAlreadySortedArray() { - int[] arr = {1, 2, 3, 4, 5}; - int[] expected = {1, 2, 3, 4, 5}; - ExchangeSort.exchangeSort(arr); - assertArrayEquals(expected, arr); - } - - @Test - public void testReverseSortedArray() { - int[] arr = {5, 4, 3, 2, 1}; - int[] expected = {1, 2, 3, 4, 5}; - ExchangeSort.exchangeSort(arr); - assertArrayEquals(expected, arr); - } - - @Test - public void testRandomOrderArray() { - int[] arr = {3, 1, 4, 2, 5}; - int[] expected = {1, 2, 3, 4, 5}; - ExchangeSort.exchangeSort(arr); - assertArrayEquals(expected, arr); +public class ExchangeSortTest extends SortingAlgorithmTest { + @Override + SortAlgorithm getSortAlgorithm() { + return new ExchangeSort(); } } From d6c1fa7ea3ae98860848caaa1743fc069016cec8 Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Sun, 28 Jan 2024 13:53:58 +0530 Subject: [PATCH 06/19] Update src/main/java/com/thealgorithms/sorts/ExchangeSort.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index 3048e26cfadd..b7ed245084d3 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -61,5 +61,3 @@ public > T[] sort(T[] array) { return array; } } - - From de919b36c59859ff29f6481df3547545a1960da5 Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Sun, 28 Jan 2024 17:07:27 +0530 Subject: [PATCH 07/19] added new test according to bubble --- .../thealgorithms/sorts/ExchangeSortTest.java | 94 ++++++++++++++++++- 1 file changed, 90 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java index 6c4271fa9e19..ea3295d3ce85 100644 --- a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java @@ -1,8 +1,94 @@ package com.thealgorithms.sorts; -public class ExchangeSortTest extends SortingAlgorithmTest { - @Override - SortAlgorithm getSortAlgorithm() { - return new ExchangeSort(); +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import org.junit.jupiter.api.Test; + +/** + * @author vedant kasar (https://github.com/555vedant) + * @see ExchangeSort + */ +public class ExchangeSortTest { + + private ExchangeSort exchangeSort = new ExchangeSort(); + + @Test + public void exchangeSortEmptyArray() { + Integer[] inputArray = {}; + Integer[] outputArray = exchangeSort.sort(inputArray); + Integer[] expectedOutput = {}; + assertArrayEquals(outputArray, expectedOutput); + } + + @Test + public void exchangeSortSingleIntegerElementArray() { + Integer[] inputArray = {5}; + Integer[] outputArray = exchangeSort.sort(inputArray); + Integer[] expectedOutput = {5}; + assertArrayEquals(outputArray, expectedOutput); + } + + @Test + public void exchangeSortSingleStringElementArray() { + String[] inputArray = {"v"}; + String[] outputArray = exchangeSort.sort(inputArray); + String[] expectedOutput = {"v"}; + assertArrayEquals(outputArray, expectedOutput); + } + + @Test + public void exchangeSortIntegerArray() { + Integer[] inputArray = {4, 23, -6, 78, 1, 54, 23, -6, -231, 9, 12}; + Integer[] outputArray = exchangeSort.sort(inputArray); + Integer[] expectedOutput = { + -231, + -6, + -6, + 1, + 4, + 9, + 12, + 23, + 23, + 54, + 78, + }; + assertArrayEquals(outputArray, expectedOutput); + } + + @Test + public void exchangeSortStringArray() { + String[] inputArray = { + "cbf", + "auk", + "ó", + "(b", + "a", + ")", + "au", + "á", + "cba", + "auk", + "(a", + "bhy", + "cba", + }; + String[] outputArray = exchangeSort.sort(inputArray); + String[] expectedOutput = { + "(a", + "(b", + ")", + "a", + "au", + "auk", + "auk", + "bhy", + "cba", + "cba", + "cbf", + "á", + "ó", + }; + assertArrayEquals(outputArray, expectedOutput); } } From e7ef24c2c1528f056ef9d8da1a6857c8d05495a5 Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Tue, 30 Jan 2024 16:34:04 +0530 Subject: [PATCH 08/19] Update src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../thealgorithms/sorts/ExchangeSortTest.java | 95 +------------------ 1 file changed, 5 insertions(+), 90 deletions(-) diff --git a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java index ea3295d3ce85..3ccf223ba58e 100644 --- a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java @@ -1,94 +1,9 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; - -import org.junit.jupiter.api.Test; - -/** - * @author vedant kasar (https://github.com/555vedant) - * @see ExchangeSort - */ -public class ExchangeSortTest { - - private ExchangeSort exchangeSort = new ExchangeSort(); - - @Test - public void exchangeSortEmptyArray() { - Integer[] inputArray = {}; - Integer[] outputArray = exchangeSort.sort(inputArray); - Integer[] expectedOutput = {}; - assertArrayEquals(outputArray, expectedOutput); - } - - @Test - public void exchangeSortSingleIntegerElementArray() { - Integer[] inputArray = {5}; - Integer[] outputArray = exchangeSort.sort(inputArray); - Integer[] expectedOutput = {5}; - assertArrayEquals(outputArray, expectedOutput); - } - - @Test - public void exchangeSortSingleStringElementArray() { - String[] inputArray = {"v"}; - String[] outputArray = exchangeSort.sort(inputArray); - String[] expectedOutput = {"v"}; - assertArrayEquals(outputArray, expectedOutput); - } - - @Test - public void exchangeSortIntegerArray() { - Integer[] inputArray = {4, 23, -6, 78, 1, 54, 23, -6, -231, 9, 12}; - Integer[] outputArray = exchangeSort.sort(inputArray); - Integer[] expectedOutput = { - -231, - -6, - -6, - 1, - 4, - 9, - 12, - 23, - 23, - 54, - 78, - }; - assertArrayEquals(outputArray, expectedOutput); - } - - @Test - public void exchangeSortStringArray() { - String[] inputArray = { - "cbf", - "auk", - "ó", - "(b", - "a", - ")", - "au", - "á", - "cba", - "auk", - "(a", - "bhy", - "cba", - }; - String[] outputArray = exchangeSort.sort(inputArray); - String[] expectedOutput = { - "(a", - "(b", - ")", - "a", - "au", - "auk", - "auk", - "bhy", - "cba", - "cba", - "cbf", - "á", - "ó", - }; - assertArrayEquals(outputArray, expectedOutput); +public class ExchangeSortTest extends SortingAlgorithmTest { + @Override + SortAlgorithm getSortAlgorithm() { + return new ExchangeSort(); } } + From 0180513c5991cb6cf702a06f3729cd508ecfe3cc Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Tue, 30 Jan 2024 16:39:49 +0530 Subject: [PATCH 09/19] fixed code to the properexchangesort --- .../com/thealgorithms/sorts/ExchangeSort.java | 52 +++++-------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index b7ed245084d3..b2f112a8dfcb 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -5,13 +5,13 @@ /** * Exchange Sort (Cocktail Shaker Sort) implementation. * - * @author 555vedant(Vedant Kasar) + * @author 555vedant (Vedant Kasar) * @see SortAlgorithm */ class ExchangeSort implements SortAlgorithm { /** - * Implements generic exchange sort (Cocktail Shaker Sort) algorithm. + * Implementation of Exchange Sort Algorithm * * @param array the array to be sorted. * @param the type of elements in the array. @@ -19,45 +19,21 @@ class ExchangeSort implements SortAlgorithm { */ @Override public > T[] sort(T[] array) { - int left = 0; - int right = array.length - 1; - - while (left <= right) { - boolean swapped = false; - - // Traverse from left to right - for (int i = left; i < right; ++i) { - if (greater(array[i], array[i + 1])) { - swap(array, i, i + 1); - swapped = true; + int n = array.length; + + for (int i = 0; i < n - 1; i++) { + // Last i elements are already sorted, so we don't need to check them + for (int j = 0; j < n - i - 1; j++) { + // Swap if the element found is greater than the next element + if (array[j].compareTo(array[j + 1]) > 0) { + // Swap array[j] and array[j+1] + T temp = array[j]; + array[j] = array[j + 1]; + array[j + 1] = temp; } } - - // If no swap occurred, the array is already sorted - if (!swapped) { - break; - } - - // Move the right boundary one position to the left - --right; - - // Traverse from right to left - for (int i = right; i > left; --i) { - if (greater(array[i - 1], array[i])) { - swap(array, i - 1, i); - swapped = true; - } - } - - // If no swap occurred, the array is already sorted - if (!swapped) { - break; - } - - // Move the left boundary one position to the right - ++left; } - return array; + return array; // Return the sorted array } } From f84c94c2072e7238d0c5e578ddf9225873f2d91f Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Wed, 31 Jan 2024 09:10:14 +0530 Subject: [PATCH 10/19] Update src/main/java/com/thealgorithms/sorts/ExchangeSort.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index b2f112a8dfcb..8bdc690bdcd5 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -6,7 +6,6 @@ * Exchange Sort (Cocktail Shaker Sort) implementation. * * @author 555vedant (Vedant Kasar) - * @see SortAlgorithm */ class ExchangeSort implements SortAlgorithm { From 0f4e46a3eb4d56d8dcee478a56fb064e8bb31856 Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Wed, 31 Jan 2024 09:10:44 +0530 Subject: [PATCH 11/19] Update src/main/java/com/thealgorithms/sorts/ExchangeSort.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index 8bdc690bdcd5..d648bb8b2ee9 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -18,7 +18,7 @@ class ExchangeSort implements SortAlgorithm { */ @Override public > T[] sort(T[] array) { - int n = array.length; + final int n = array.length; for (int i = 0; i < n - 1; i++) { // Last i elements are already sorted, so we don't need to check them From 1e23a87b7ff498f96e76556bd61fff7d6220d9d3 Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Wed, 31 Jan 2024 09:11:05 +0530 Subject: [PATCH 12/19] Update src/main/java/com/thealgorithms/sorts/ExchangeSort.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index d648bb8b2ee9..33b710208555 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * Exchange Sort (Cocktail Shaker Sort) implementation. * From fc38b2024ee7960c49a7c5eee3a293b540ae0f01 Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Wed, 31 Jan 2024 09:11:27 +0530 Subject: [PATCH 13/19] Update src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java index 3ccf223ba58e..6c4271fa9e19 100644 --- a/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/ExchangeSortTest.java @@ -6,4 +6,3 @@ SortAlgorithm getSortAlgorithm() { return new ExchangeSort(); } } - From af748c4d5cb12e0e6f64ed1e8b9ff557533e86b7 Mon Sep 17 00:00:00 2001 From: VedantK <145242784+555vedant@users.noreply.github.com> Date: Thu, 1 Feb 2024 01:02:03 +0530 Subject: [PATCH 14/19] Update src/main/java/com/thealgorithms/sorts/ExchangeSort.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index 33b710208555..3b3855a77d7e 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -24,7 +24,7 @@ public > T[] sort(T[] array) { // Swap if the element found is greater than the next element if (array[j].compareTo(array[j + 1]) > 0) { // Swap array[j] and array[j+1] - T temp = array[j]; + final T temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } From 65c70a5ec0a07d546b5684d90776cd9e11ad1108 Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Thu, 1 Feb 2024 01:40:28 +0530 Subject: [PATCH 15/19] added documentaion of algoritum --- .../com/thealgorithms/sorts/ExchangeSort.java | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index b2f112a8dfcb..e44a25ead10a 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -3,10 +3,23 @@ import static com.thealgorithms.sorts.SortUtils.*; /** - * Exchange Sort (Cocktail Shaker Sort) implementation. + * ExchangeSort is an implementation of the Exchange Sort algorithm. + * + *

+ * Exchange sort works by comparing each element with all subsequent elements, + * swapping where needed, to ensure the correct placement of each element + * in the final sorted order. It iteratively performs this process for each + * element in the array. While it lacks the advantage of bubble sort in + * detecting sorted lists in one pass, it can be more efficient than bubble sort + * due to a constant factor (one less pass over the data to be sorted; half as + * many total comparisons) in worst-case scenarios. + *

+ * + *

+ * Reference: https://en.wikipedia.org/wiki/Sorting_algorithm#Exchange_sort + *

* * @author 555vedant (Vedant Kasar) - * @see SortAlgorithm */ class ExchangeSort implements SortAlgorithm { @@ -22,18 +35,28 @@ public > T[] sort(T[] array) { int n = array.length; for (int i = 0; i < n - 1; i++) { - // Last i elements are already sorted, so we don't need to check them - for (int j = 0; j < n - i - 1; j++) { - // Swap if the element found is greater than the next element - if (array[j].compareTo(array[j + 1]) > 0) { - // Swap array[j] and array[j+1] - T temp = array[j]; - array[j] = array[j + 1]; - array[j + 1] = temp; + for (int j = i + 1; j < n; j++) { + if (array[i].compareTo(array[j]) > 0) { + // Use a generic swap method + swap(array, i, j); } } } - return array; // Return the sorted array + return array; + } + + /** + * Generic swap method to swap elements at given indices in an array. + * + * @param array the array in which elements are to be swapped. + * @param i the index of the first element. + * @param j the index of the second element. + * @param the type of elements in the array. + */ + private void swap(T[] array, int i, int j) { + T temp = array[i]; + array[i] = array[j]; + array[j] = temp; } } From 04d8a3ddee764ebc40ed1307af0d7551453ca51b Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Thu, 1 Feb 2024 01:52:23 +0530 Subject: [PATCH 16/19] modified logic --- .../com/thealgorithms/sorts/ExchangeSort.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index 169795f391a3..e44a25ead10a 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -1,5 +1,7 @@ package com.thealgorithms.sorts; +import static com.thealgorithms.sorts.SortUtils.*; + /** * ExchangeSort is an implementation of the Exchange Sort algorithm. * @@ -30,24 +32,13 @@ class ExchangeSort implements SortAlgorithm { */ @Override public > T[] sort(T[] array) { - final int n = array.length; + int n = array.length; for (int i = 0; i < n - 1; i++) { -<<<<<<< HEAD for (int j = i + 1; j < n; j++) { if (array[i].compareTo(array[j]) > 0) { // Use a generic swap method swap(array, i, j); -======= - // Last i elements are already sorted, so we don't need to check them - for (int j = 0; j < n - i - 1; j++) { - // Swap if the element found is greater than the next element - if (array[j].compareTo(array[j + 1]) > 0) { - // Swap array[j] and array[j+1] - final T temp = array[j]; - array[j] = array[j + 1]; - array[j + 1] = temp; ->>>>>>> af748c4d5cb12e0e6f64ed1e8b9ff557533e86b7 } } } From e26c3c9aadf00079906abe071b5985f87e93d67d Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Thu, 1 Feb 2024 13:27:49 +0530 Subject: [PATCH 17/19] final chnage --- .../com/thealgorithms/sorts/ExchangeSort.java | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index e44a25ead10a..54cbfe7b966d 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * ExchangeSort is an implementation of the Exchange Sort algorithm. * @@ -32,12 +30,11 @@ class ExchangeSort implements SortAlgorithm { */ @Override public > T[] sort(T[] array) { - int n = array.length; - for (int i = 0; i < n - 1; i++) { - for (int j = i + 1; j < n; j++) { + for (int i = 0; i < array.length - 1; i++) { + for (int j = i + 1; j < array.length; j++) { if (array[i].compareTo(array[j]) > 0) { - // Use a generic swap method + swap(array, i, j); } } @@ -46,14 +43,6 @@ public > T[] sort(T[] array) { return array; } - /** - * Generic swap method to swap elements at given indices in an array. - * - * @param array the array in which elements are to be swapped. - * @param i the index of the first element. - * @param j the index of the second element. - * @param the type of elements in the array. - */ private void swap(T[] array, int i, int j) { T temp = array[i]; array[i] = array[j]; From 2c21671c2629b7c9be9414fdded33c6230147bdb Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Thu, 1 Feb 2024 09:05:30 +0100 Subject: [PATCH 18/19] style: remove blank line --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index 54cbfe7b966d..0969a4851936 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -34,7 +34,6 @@ public > T[] sort(T[] array) { for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[i].compareTo(array[j]) > 0) { - swap(array, i, j); } } From aa725e1728bca9e8144fb4d65853dd017e4d40da Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Thu, 1 Feb 2024 13:39:30 +0530 Subject: [PATCH 19/19] removed line --- src/main/java/com/thealgorithms/sorts/ExchangeSort.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java index 54cbfe7b966d..28303430950c 100644 --- a/src/main/java/com/thealgorithms/sorts/ExchangeSort.java +++ b/src/main/java/com/thealgorithms/sorts/ExchangeSort.java @@ -20,7 +20,6 @@ * @author 555vedant (Vedant Kasar) */ class ExchangeSort implements SortAlgorithm { - /** * Implementation of Exchange Sort Algorithm * @@ -30,16 +29,13 @@ class ExchangeSort implements SortAlgorithm { */ @Override public > T[] sort(T[] array) { - for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[i].compareTo(array[j]) > 0) { - swap(array, i, j); } } } - return array; }