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; } 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