diff --git a/sorting/java/src/be/brainbaking/lists/Lists.java b/sorting/java/src/be/brainbaking/lists/Lists.java index 4ec0c96..4f30384 100644 --- a/sorting/java/src/be/brainbaking/lists/Lists.java +++ b/sorting/java/src/be/brainbaking/lists/Lists.java @@ -5,6 +5,10 @@ import java.util.stream.Collectors; public class Lists { + public static ListsWrapper exchange(int oneBasedA) { + return new ListsWrapper(oneBasedA); + } + public static void swap(List list, int oneBasedA, int oneBasedB) { int temp = list.get(oneBasedA - 1); list.set(oneBasedA - 1, list.get(oneBasedB - 1)); diff --git a/sorting/java/src/be/brainbaking/lists/ListsWrapper.java b/sorting/java/src/be/brainbaking/lists/ListsWrapper.java new file mode 100644 index 0000000..1f75b57 --- /dev/null +++ b/sorting/java/src/be/brainbaking/lists/ListsWrapper.java @@ -0,0 +1,22 @@ +package be.brainbaking.lists; + +import java.util.List; + +public class ListsWrapper { + + private final int oneBasedA; + private int oneBasedB; + + public ListsWrapper with(int oneBasedB) { + this.oneBasedB = oneBasedB; + return this; + } + + public void in(List list) { + Lists.swap(list, oneBasedA, oneBasedB); + } + + public ListsWrapper(int oneBasedA) { + this.oneBasedA = oneBasedA; + } +} diff --git a/sorting/java/src/be/brainbaking/sorting/QuickSort.java b/sorting/java/src/be/brainbaking/sorting/QuickSort.java index 9a81d1a..2870ad4 100644 --- a/sorting/java/src/be/brainbaking/sorting/QuickSort.java +++ b/sorting/java/src/be/brainbaking/sorting/QuickSort.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; import static be.brainbaking.lists.Lists.asString; +import static be.brainbaking.lists.Lists.exchange; public class QuickSort implements Sortable { @@ -68,11 +69,11 @@ public class QuickSort implements Sortable { for(int j = oneBasedStartIndex; j <= oneBasedEndIndex - 1; j++) { if(list.get(j - 1) <= x) { i++; - Lists.swap(list, i, j); + exchange(i).with(j).in(list); } } - Lists.swap(list, i + 1, oneBasedEndIndex); + exchange(i + 1).with(oneBasedEndIndex).in(list); System.out.println("partitioned: " + asString(list)); return i + 1; }