From aec2d5b2f8eb56753f1e5b4db60debe100bdb2d8 Mon Sep 17 00:00:00 2001 From: JoaoMNZ Date: Wed, 27 Aug 2025 09:14:34 -0300 Subject: [PATCH 1/2] Refactor Java quicksort example for chapter 4 --- .../java/05_quicksort/src/Quicksort.java | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/04_quicksort/java/05_quicksort/src/Quicksort.java b/04_quicksort/java/05_quicksort/src/Quicksort.java index 432af280..86239c2e 100644 --- a/04_quicksort/java/05_quicksort/src/Quicksort.java +++ b/04_quicksort/java/05_quicksort/src/Quicksort.java @@ -1,35 +1,40 @@ import java.util.Arrays; -import java.util.List; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; public class Quicksort { - public static void main(String[] args) { - System.out.println(quicksort(Arrays.asList(10, 5, 2, 3))); // [2, 3, 5, 10] + public static void main(String[] args){ + int[] array = {10, 5, 2, 3}; + System.out.println(Arrays.toString(array)); // Original array + quickSort(array, 0, array.length - 1); + System.out.println(Arrays.toString(array)); // Sorted array } - private static List quicksort(List list) { - if (list.size() < 2) { - // base case, arrays with 0 or 1 element are already "sorted" - return list; - } else { - // recursive case - Integer pivot = list.get(0); - - // sub-array of all the elements less than the pivot - List less = list.stream().skip(1).filter(el -> el <= pivot) - .collect(Collectors.toList()); - - // sub-array of all the elements greater than the pivot - List greater = list.stream().skip(1).filter(el -> el > pivot) - .collect(Collectors.toList()); + private static void quickSort(int[] array, int low, int high){ + if(low >= high){ + // Base case: arrays with 0 or 1 element are already "sorted" + return; + } + // Recursive case + int pivotIndex = partition(array, low, high); + quickSort(array, low, pivotIndex - 1); // Sub-array of elements less than pivot + quickSort(array, pivotIndex + 1, high); // Sub-array of elements greater than pivot + } - return Stream.of( - quicksort(less).stream(), - Stream.of(pivot), - quicksort(greater).stream()) - .flatMap(Function.identity()).collect(Collectors.toList()); + private static int partition(int[] array, int low, int high) { + int pivot = array[high]; + int i = low - 1; + for(int j = low; j < high; j++){ + if(array[j] <= pivot){ + i++; + swap(array, i, j); + } } + swap(array, i+1, high); + return i+1; + } + + private static void swap(int[] array, int i, int j){ + int temp = array[i]; + array[i] = array[j]; + array[j] = temp; } } \ No newline at end of file From 635649390c68beb38c8f9bcaa17f7f75eabca0c1 Mon Sep 17 00:00:00 2001 From: JoaoMNZ Date: Wed, 27 Aug 2025 09:32:47 -0300 Subject: [PATCH 2/2] Add spacing around operators for consistency --- 04_quicksort/java/05_quicksort/src/Quicksort.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/04_quicksort/java/05_quicksort/src/Quicksort.java b/04_quicksort/java/05_quicksort/src/Quicksort.java index 86239c2e..b18e2d5a 100644 --- a/04_quicksort/java/05_quicksort/src/Quicksort.java +++ b/04_quicksort/java/05_quicksort/src/Quicksort.java @@ -28,8 +28,8 @@ private static int partition(int[] array, int low, int high) { swap(array, i, j); } } - swap(array, i+1, high); - return i+1; + swap(array, i + 1, high); + return i + 1; } private static void swap(int[] array, int i, int j){