From 90269673edd491f2c622b58fb0038a92bed1f24e Mon Sep 17 00:00:00 2001 From: vedant kasar Date: Wed, 24 Jan 2024 22:31:09 +0530 Subject: [PATCH 1/5] 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 2/5] 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 3/5] 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 4/5] 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 5/5] 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(); } } 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