From 3145732c0900a1fbbdaca7808549e0b8af0418b1 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 09:48:13 +0530 Subject: [PATCH 01/12] Added PriorityQueueSort.java Implemented PriorityQueueSort using Java's PriorityQueue (Min-Heap). - Returns the array sorted in ascending order - Time complexity: O(n log n) - Space complexity: O(n) --- .../sorts/PriorityQueueSort.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java new file mode 100644 index 000000000000..fb115f62056c --- /dev/null +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -0,0 +1,44 @@ +package com.thealgorithms.sorts; + +import java.util.PriorityQueue; + +/** + * Sorts an array using Java's PriorityQueue (Min-Heap). + * + *

Example: + * Input: [7, 2, 9, 4, 1] + * Output: [1, 2, 4, 7, 9] + * + *

Time Complexity: + * - Inserting n elements into the PriorityQueue → O(n log n) + * - Polling n elements → O(n log n) + * - Total: O(n log n) + * + * Space Complexity: O(n) for the PriorityQueue + */ +public class PriorityQueueSort { + + /** + * Sorts the given array in ascending order using a PriorityQueue. + * + * @param arr the array to be sorted + * @return the sorted array (in-place) + */ + public static int[] sort(int[] arr) { + if (arr == null || arr.length == 0) { + return arr; + } + + PriorityQueue pq = new PriorityQueue<>(); + for (int num : arr) { + pq.offer(num); + } + + int i = 0; + while (!pq.isEmpty()) { + arr[i++] = pq.poll(); + } + + return arr; + } +} From b88179c8fabfbc548a66bd0181dcd113a9721490 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 09:53:46 +0530 Subject: [PATCH 02/12] Added tests for PriorityQueueSort --- .../sorts/PriorityQueueSortTest.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java diff --git a/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java b/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java new file mode 100644 index 000000000000..75bd87ecfed6 --- /dev/null +++ b/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java @@ -0,0 +1,42 @@ +package com.thealgorithms.sorts; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import org.junit.jupiter.api.Test; + +class PriorityQueueSortTest { + + @Test + void testSortNormalArray() { + int[] input = {7, 2, 9, 4, 1}; + int[] expected = {1, 2, 4, 7, 9}; + assertArrayEquals(expected, PriorityQueueSort.sort(input)); + } + + @Test + void testEmptyArray() { + int[] input = {}; + int[] expected = {}; + assertArrayEquals(expected, PriorityQueueSort.sort(input)); + } + + @Test + void testNegativeNumbers() { + int[] input = {3, -1, 2, -5, 0}; + int[] expected = {-5, -1, 0, 2, 3}; + assertArrayEquals(expected, PriorityQueueSort.sort(input)); + } + + @Test + void testAlreadySortedArray() { + int[] input = {1, 2, 3, 4, 5}; + int[] expected = {1, 2, 3, 4, 5}; + assertArrayEquals(expected, PriorityQueueSort.sort(input)); + } + + @Test + void testArrayWithDuplicates() { + int[] input = {5, 1, 3, 3, 2, 5}; + int[] expected = {1, 2, 3, 3, 5, 5}; + assertArrayEquals(expected, PriorityQueueSort.sort(input)); + } +} From 1b91cefbf5cad90ce6df6e9560629ead9133d715 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 10:08:56 +0530 Subject: [PATCH 03/12] Update PriorityQueueSortTest.java --- .../thealgorithms/sorts/PriorityQueueSortTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java b/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java index 75bd87ecfed6..7ff1b14ff06a 100644 --- a/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java @@ -5,6 +5,19 @@ class PriorityQueueSortTest { + @Test + void testNullArray() { + int[] input = null; + assertArrayEquals(null, PriorityQueueSort.sort(input)); + } + + @Test + void testSingleElementArray() { + int[] input = {5}; + int[] expected = {5}; + assertArrayEquals(expected, PriorityQueueSort.sort(input)); + } + @Test void testSortNormalArray() { int[] input = {7, 2, 9, 4, 1}; From b2a89e7a47108bcb0a687881dd939956c7428256 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 10:09:43 +0530 Subject: [PATCH 04/12] Fixed formatting and added full coverage tests for PriorityQueueSort From a1b1d4a3d66cb9b1b6e329dcda19fc02c22b2403 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 10:14:04 +0530 Subject: [PATCH 05/12] Update PriorityQueueSort.java --- src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index fb115f62056c..8321c33972cf 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -15,9 +15,14 @@ * - Total: O(n log n) * * Space Complexity: O(n) for the PriorityQueue + * + * @see Heap / PriorityQueue */ public class PriorityQueueSort { + // Private constructor to prevent instantiation (utility class) + private PriorityQueueSort() {} + /** * Sorts the given array in ascending order using a PriorityQueue. * From 4c51c59942915e3fd1159bfe126bf15d4dcd7938 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 13:40:41 +0530 Subject: [PATCH 06/12] Update PriorityQueueSort.java --- src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index 8321c33972cf..fca432c7d03f 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -18,10 +18,10 @@ * * @see Heap / PriorityQueue */ -public class PriorityQueueSort { +public final class PriorityQueueSort { // Private constructor to prevent instantiation (utility class) - private PriorityQueueSort() {} + private PriorityQueueSort() { } /** * Sorts the given array in ascending order using a PriorityQueue. From bd6cf6b05f0f538cf08abef9184c3a822383fe88 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 13:50:47 +0530 Subject: [PATCH 07/12] Update PriorityQueueSort.java --- src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index fca432c7d03f..5cf903b54e99 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -21,7 +21,8 @@ public final class PriorityQueueSort { // Private constructor to prevent instantiation (utility class) - private PriorityQueueSort() { } + private PriorityQueueSort() { + } /** * Sorts the given array in ascending order using a PriorityQueue. From 4dbdad1b6fb74a76b5f6238eb998d0538c0da447 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 14:05:12 +0530 Subject: [PATCH 08/12] Update PriorityQueueSortTest.java From 0bb5df0206411546ab72ddd10341fce0a0aca86e Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 14:06:01 +0530 Subject: [PATCH 09/12] Update PriorityQueueSort.java --- .../com/thealgorithms/sorts/PriorityQueueSort.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index 5cf903b54e99..be7cf6cba64b 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -5,24 +5,22 @@ /** * Sorts an array using Java's PriorityQueue (Min-Heap). * - *

Example: - * Input: [7, 2, 9, 4, 1] - * Output: [1, 2, 4, 7, 9] + *

Example: Input: [7, 2, 9, 4, 1] Output: [1, 2, 4, 7, 9] * *

Time Complexity: * - Inserting n elements into the PriorityQueue → O(n log n) * - Polling n elements → O(n log n) * - Total: O(n log n) * - * Space Complexity: O(n) for the PriorityQueue + *

Space Complexity: O(n) for the PriorityQueue * - * @see Heap / PriorityQueue + * @see + * Heap / PriorityQueue */ public final class PriorityQueueSort { // Private constructor to prevent instantiation (utility class) - private PriorityQueueSort() { - } + private PriorityQueueSort() {} /** * Sorts the given array in ascending order using a PriorityQueue. From a41aaa66541962926ce868c48aba8258a61606a2 Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 14:07:53 +0530 Subject: [PATCH 10/12] Update PriorityQueueSort.java --- src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index be7cf6cba64b..880f9b3dd821 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -20,7 +20,9 @@ public final class PriorityQueueSort { // Private constructor to prevent instantiation (utility class) - private PriorityQueueSort() {} + private PriorityQueueSort() { + + } /** * Sorts the given array in ascending order using a PriorityQueue. From 02d67512538cc4b715538f0e9b1711683920508a Mon Sep 17 00:00:00 2001 From: Rahul P Date: Thu, 18 Sep 2025 14:14:25 +0530 Subject: [PATCH 11/12] Update PriorityQueueSort.java --- src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index 880f9b3dd821..63b799cd441d 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -20,8 +20,7 @@ public final class PriorityQueueSort { // Private constructor to prevent instantiation (utility class) - private PriorityQueueSort() { - + private PriorityQueueSort() { } /** From be89524d9d70839196da60c87b4f27a933f23b2f Mon Sep 17 00:00:00 2001 From: Rahul-150705 Date: Thu, 18 Sep 2025 14:42:04 +0530 Subject: [PATCH 12/12] Fix formatting with clang-format --- src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java | 2 +- .../java/com/thealgorithms/sorts/PriorityQueueSortTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java index 63b799cd441d..16f13050e8b3 100644 --- a/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java +++ b/src/main/java/com/thealgorithms/sorts/PriorityQueueSort.java @@ -20,7 +20,7 @@ public final class PriorityQueueSort { // Private constructor to prevent instantiation (utility class) - private PriorityQueueSort() { + private PriorityQueueSort() { } /** diff --git a/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java b/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java index 7ff1b14ff06a..215431293227 100644 --- a/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/PriorityQueueSortTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.sorts; import static org.junit.jupiter.api.Assertions.assertArrayEquals; + import org.junit.jupiter.api.Test; class PriorityQueueSortTest {