From f1582867e131f3c79e75aaca470dc0ee89b3d438 Mon Sep 17 00:00:00 2001 From: PauLopNun Date: Mon, 6 Oct 2025 02:22:36 +0200 Subject: [PATCH 1/3] Add PostmanSort algorithm - Implements Postman Sort using gap-based insertion approach - Adaptive gap reduction with shrink factor of 1.3 - Includes comprehensive test suite extending SortingAlgorithmTest --- .../com/thealgorithms/sorts/PostmanSort.java | 45 +++++++++++++++++++ .../thealgorithms/sorts/PostmanSortTest.java | 8 ++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/java/com/thealgorithms/sorts/PostmanSort.java create mode 100644 src/test/java/com/thealgorithms/sorts/PostmanSortTest.java diff --git a/src/main/java/com/thealgorithms/sorts/PostmanSort.java b/src/main/java/com/thealgorithms/sorts/PostmanSort.java new file mode 100644 index 000000000000..245b24dd4438 --- /dev/null +++ b/src/main/java/com/thealgorithms/sorts/PostmanSort.java @@ -0,0 +1,45 @@ +package com.thealgorithms.sorts; + +import java.util.Arrays; + +/** + * Postman Sort Algorithm Implementation + * + * @see Postman Sort Algorithm + */ +public class PostmanSort implements SortAlgorithm { + + @Override + public > T[] sort(T[] array) { + if (array == null || array.length <= 1) { + return array; + } + postmanSort(array); + return array; + } + + private > void postmanSort(T[] array) { + int n = array.length; + double gapFactor = 1.3; + int gap = (int) (n / gapFactor); + + while (gap > 0) { + for (int i = gap; i < n; i++) { + T temp = array[i]; + int j = i; + while (j >= gap && SortUtils.greater(array[j - gap], temp)) { + array[j] = array[j - gap]; + j -= gap; + } + array[j] = temp; + } + if (gap == 1) { + break; + } + gap = (int) (gap / gapFactor); + if (gap < 1) { + gap = 1; + } + } + } +} \ No newline at end of file diff --git a/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java b/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java new file mode 100644 index 000000000000..8d3cae41c057 --- /dev/null +++ b/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java @@ -0,0 +1,8 @@ +package com.thealgorithms.sorts; + +public class PostmanSortTest extends SortingAlgorithmTest { + @Override + SortAlgorithm getSortAlgorithm() { + return new PostmanSort(); + } +} \ No newline at end of file From c55606fbc86a27994cbd5abb2c2347b94f9817af Mon Sep 17 00:00:00 2001 From: PauLopNun Date: Mon, 6 Oct 2025 02:30:42 +0200 Subject: [PATCH 2/3] Fix clang-format: add newlines --- src/main/java/com/thealgorithms/sorts/PostmanSort.java | 2 +- src/test/java/com/thealgorithms/sorts/PostmanSortTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/PostmanSort.java b/src/main/java/com/thealgorithms/sorts/PostmanSort.java index 245b24dd4438..149dc6b6f393 100644 --- a/src/main/java/com/thealgorithms/sorts/PostmanSort.java +++ b/src/main/java/com/thealgorithms/sorts/PostmanSort.java @@ -42,4 +42,4 @@ private > void postmanSort(T[] array) { } } } -} \ No newline at end of file +} diff --git a/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java b/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java index 8d3cae41c057..0f8f349bfc02 100644 --- a/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/PostmanSortTest.java @@ -5,4 +5,4 @@ public class PostmanSortTest extends SortingAlgorithmTest { SortAlgorithm getSortAlgorithm() { return new PostmanSort(); } -} \ No newline at end of file +} From 253735f368006e81a16a95831d626009ec71dcee Mon Sep 17 00:00:00 2001 From: PauLopNun Date: Mon, 6 Oct 2025 02:49:15 +0200 Subject: [PATCH 3/3] Remove unused import in PostmanSort - Clean up unnecessary Arrays import - Keep implementation focused and minimal --- src/main/java/com/thealgorithms/sorts/PostmanSort.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/PostmanSort.java b/src/main/java/com/thealgorithms/sorts/PostmanSort.java index 149dc6b6f393..2226db222ef7 100644 --- a/src/main/java/com/thealgorithms/sorts/PostmanSort.java +++ b/src/main/java/com/thealgorithms/sorts/PostmanSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import java.util.Arrays; - /** * Postman Sort Algorithm Implementation *