mirror of
https://gitlab.uni-marburg.de/langbeid/powersort.git
synced 2025-01-21 19:50:35 +01:00
import QuickSort
This commit is contained in:
parent
68d86d6e6b
commit
6d25796bac
@ -0,0 +1,40 @@
|
||||
package de.uni_marburg.powersort.sort;
|
||||
|
||||
public class QuickSort {
|
||||
/**
|
||||
* Based on https://www.baeldung.com/java-quicksort
|
||||
*/
|
||||
public static void sort(Integer[] arr) {
|
||||
quickSort(arr, 0, arr.length-1);
|
||||
}
|
||||
|
||||
private static void quickSort(Integer[] arr, int begin, int end) {
|
||||
if (begin < end) {
|
||||
int partitionIndex = partition(arr, begin, end);
|
||||
|
||||
quickSort(arr, begin, partitionIndex-1);
|
||||
quickSort(arr, partitionIndex+1, end);
|
||||
}
|
||||
}
|
||||
|
||||
private static int partition(Integer[] arr, int begin, int end) {
|
||||
int pivot = arr[end];
|
||||
int i = (begin-1);
|
||||
|
||||
for (int j = begin; j < end; j++) {
|
||||
if (arr[j] <= pivot) {
|
||||
i++;
|
||||
|
||||
int swapTemp = arr[i];
|
||||
arr[i] = arr[j];
|
||||
arr[j] = swapTemp;
|
||||
}
|
||||
}
|
||||
|
||||
int swapTemp = arr[i+1];
|
||||
arr[i+1] = arr[end];
|
||||
arr[end] = swapTemp;
|
||||
|
||||
return i+1;
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import de.uni_marburg.powersort.benchmark.NaturalOrder;
|
||||
|
||||
public enum SortEnum {
|
||||
BUBBLE_SORT,
|
||||
QUICK_SORT,
|
||||
MERGE_SORT,
|
||||
TIM_SORT,
|
||||
FINN_SORT,
|
||||
@ -13,6 +14,7 @@ public enum SortEnum {
|
||||
public SortImpl getSortImpl() {
|
||||
return switch (this) {
|
||||
case BUBBLE_SORT -> array -> BubbleSort.sort(array, NaturalOrder.INSTANCE);
|
||||
case QUICK_SORT -> array -> QuickSort.sort((Integer[]) array); // TODO rm cast
|
||||
case MERGE_SORT -> array -> MergeSort.legacyMergeSort(array, NaturalOrder.INSTANCE);
|
||||
case TIM_SORT -> array -> TimSort.sort(array, 0, array.length, NaturalOrder.INSTANCE, null, 0, 0);
|
||||
case FINN_SORT -> array -> FinnSort.sort(array, NaturalOrder.INSTANCE);
|
||||
|
@ -0,0 +1,7 @@
|
||||
package de.uni_marburg.powersort.sort;
|
||||
|
||||
public class QuickSortTest extends AbstractSortTest {
|
||||
QuickSortTest() {
|
||||
sortAlg = SortEnum.ASORT;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user