Package com.irurueta.sorting
Class ShellSorter<T>
java.lang.Object
com.irurueta.sorting.Sorter<T>
com.irurueta.sorting.ShellSorter<T>
- Type Parameters:
T
- Type of instances being sorted.This class is based on algorithm found at Numerical Recipes. 3rd Edition. Cambridge Press. Chapter 8. p. 422 Knuth. D.E. 1997, Sorting and Searching, 3rd ed., vol. 3 of The Art of Computer Programming (Reading, MA: Addison-Wesley) Sedgewick, R. 1998. Algorithms in C, 3rd ed. (Reading, MA: Addison- Wesley), Chapter 11.
Sorts instances of type T in provided arrays using Shell method.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int
Constant defining increment factor to be used internally.private static final int
Constant defining minimum increment before stopping the sorting process.Fields inherited from class com.irurueta.sorting.Sorter
DEFAULT_SORTING_METHOD
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns sorting method of this class.void
sort
(double[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.void
sort
(float[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.void
sort
(int[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.void
sort
(long[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.void
sort
(T[] array, int fromIndex, int toIndex, Comparator<T> comparator) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.int[]
sortWithIndices
(double[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.int[]
sortWithIndices
(float[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.int[]
sortWithIndices
(int[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.int[]
sortWithIndices
(long[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.int[]
sortWithIndices
(T[] array, int fromIndex, int toIndex, Comparator<T> comparator) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i.Methods inherited from class com.irurueta.sorting.Sorter
create, create, getInitialIndicesVector, median, median, median, median, median, median, median, median, median, median, median, median, select, select, select, select, select, select, select, select, select, select, select, select, sort, sort, sort, sort, sort, sort, sort, sortWithIndices, sortWithIndices, sortWithIndices, sortWithIndices, sortWithIndices, sortWithIndices, sortWithIndices, swap, swap, swap, swap, swap
-
Field Details
-
INCREMENT_FACTOR
private static final int INCREMENT_FACTORConstant defining increment factor to be used internally.- See Also:
-
MIN_INCREMENT
private static final int MIN_INCREMENTConstant defining minimum increment before stopping the sorting process.- See Also:
-
-
Constructor Details
-
ShellSorter
public ShellSorter()
-
-
Method Details
-
sort
Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered.- Specified by:
sort
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).comparator
- Determines whether an element is greater or lower than another one.- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sortWithIndices
Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered. An array containing the original indices where elements were located is returned so that other arrays or collections can be kept in the same order.- Specified by:
sortWithIndices
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).comparator
- Determines whether an element is greater or lower than another one.- Returns:
- Array containing original location of elements that have been sorted. Only elements between fromIndex (inclusive) and toIndex (exclusive) are modified, the remaining ones are kept in natural order.
- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
getMethod
Returns sorting method of this class. -
sort
public void sort(double[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered.- Specified by:
sort
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sortWithIndices
public int[] sortWithIndices(double[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered. An array containing the original indices where elements were located is returned so that other arrays or collections can be kept in the same order.- Specified by:
sortWithIndices
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Returns:
- Array containing original location of elements that have been sorted. Only elements between fromIndex (inclusive) and toIndex (exclusive) are modified, the remaining ones are kept in natural order.
- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sort
public void sort(float[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered.- Specified by:
sort
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sortWithIndices
public int[] sortWithIndices(float[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered. An array containing the original indices where elements were located is returned so that other arrays or collections can be kept in the same order.- Specified by:
sortWithIndices
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Returns:
- Array containing original location of elements that have been sorted. Only elements between fromIndex (inclusive) and toIndex (exclusive) are modified, the remaining ones are kept in natural order.
- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sort
public void sort(int[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered.- Specified by:
sort
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sortWithIndices
public int[] sortWithIndices(int[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered. An array containing the original indices where elements were located is returned so that other arrays or collections can be kept in the same order.- Specified by:
sortWithIndices
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Returns:
- Array containing original location of elements that have been sorted. Only elements between fromIndex (inclusive) and toIndex (exclusive) are modified, the remaining ones are kept in natural order.
- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sort
public void sort(long[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered.- Specified by:
sort
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-
sortWithIndices
public int[] sortWithIndices(long[] array, int fromIndex, int toIndex) Sorts provided array in ascending order so thatarray[i - 1] < array[i]
for any valid i. This method modifies provided array so that after execution of this method array elements are ordered. An array containing the original indices where elements were located is returned so that other arrays or collections can be kept in the same order.- Specified by:
sortWithIndices
in classSorter<T>
- Parameters:
array
- Array to be sorted. After execution of this method elements in array between fromIndex (inclusive) and toIndex (exclusive) are modified so that they are on ascending order.fromIndex
- Index were sorting starts (inclusive).toIndex
- Index were sorting stops (exclusive).- Returns:
- Array containing original location of elements that have been sorted. Only elements between fromIndex (inclusive) and toIndex (exclusive) are modified, the remaining ones are kept in natural order.
- Throws:
IllegalArgumentException
- IffromIndex > toIndex
.ArrayIndexOutOfBoundsException
- iffromIndex < 0
ortoIndex > array.length
.
-