@Reference(authors="V. Yaroslavskiy", title="Dual-Pivot Quicksort", booktitle="", url="http://iaroslavski.narod.ru/quicksort/", bibkey="web/Yaroslavskiy09") public class IntegerArrayQuickSort extends java.lang.Object
Reference:
The implementation is closely based on:
Vladimir Yaroslavskiy
Dual-Pivot Quicksort
and differs mostly in that we sort different kinds of arrays, and allow the use of comparators - useful in particular when the array references external objects.
Modifier and Type | Field and Description |
---|---|
private static int |
INSERTION_THRESHOLD
Threshold for using insertion sort.
|
Modifier | Constructor and Description |
---|---|
private |
IntegerArrayQuickSort()
Private constructor.
|
Modifier and Type | Method and Description |
---|---|
private static void |
insertionSort(int[] data,
int start,
int end,
it.unimi.dsi.fastutil.ints.IntComparator comp)
Insertion sort, for short arrays.
|
private static void |
quickSort(int[] data,
int start,
int end,
it.unimi.dsi.fastutil.ints.IntComparator comp)
Actual recursive sort function.
|
static void |
sort(int[] data,
it.unimi.dsi.fastutil.ints.IntComparator comp)
Sort the full array using the given comparator.
|
static void |
sort(int[] data,
int start,
int end,
it.unimi.dsi.fastutil.ints.IntComparator comp)
Sort the array using the given comparator.
|
private static void |
sort5(int[] data,
int m1,
int m2,
int m3,
int m4,
int m5,
it.unimi.dsi.fastutil.ints.IntComparator comp)
An explicit sort, for the five pivot candidates.
|
private static final int INSERTION_THRESHOLD
private IntegerArrayQuickSort()
public static void sort(int[] data, it.unimi.dsi.fastutil.ints.IntComparator comp)
data
- Data to sortcomp
- Comparatorpublic static void sort(int[] data, int start, int end, it.unimi.dsi.fastutil.ints.IntComparator comp)
data
- Data to sortstart
- First indexend
- Last index (exclusive)comp
- Comparatorprivate static void quickSort(int[] data, int start, int end, it.unimi.dsi.fastutil.ints.IntComparator comp)
data
- Data to sortstart
- First indexend
- Last index (exclusive!)comp
- Comparatorprivate static void insertionSort(int[] data, int start, int end, it.unimi.dsi.fastutil.ints.IntComparator comp)
data
- Data to sortstart
- First indexend
- Last index (exclusive!)comp
- Comparatorprivate static void sort5(int[] data, int m1, int m2, int m3, int m4, int m5, it.unimi.dsi.fastutil.ints.IntComparator comp)
Note that this must only be used with
m1 < m2 < m3 < m4 < m5
.
data
- Datam1
- Pivot candidate positionm2
- Pivot candidate positionm3
- Pivot candidate positionm4
- Pivot candidate positionm5
- Pivot candidate positioncomp
- ComparatorCopyright © 2019 ELKI Development Team. License information.