Class Sorting
java.util.Arrays. Contains, for example, the quicksort on
Comparators and Comparables, which are still missing in
java.util.Arrays of JDK 1.2. Also provides mergesorts for types not
supported in java.util.Arrays, as well as a couple of other methods
for primitive arrays. The quicksorts and mergesorts are the JDK 1.2 V1.26
algorithms, modified as necessary.- Version:
- 1.0, 03-Jul-99
- Author:
- wolfgang.hoschek@cern.ch
- See Also:
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSorting()Makes this class non instantiable, but still let's others inherit from it. -
Method Summary
Modifier and TypeMethodDescriptionstatic intbinarySearchFromTo(byte[] list, byte key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(char[] list, char key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(double[] list, double key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(float[] list, float key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(int[] list, int key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(int from, int to, IntComparator comp) Generically searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(long[] list, long key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(short[] list, short key, int from, int to) Searches the list for the specified value using the binary search algorithm.static intbinarySearchFromTo(Object[] list, Object key, int from, int to, Comparator comparator) Searches the list for the specified value using the binary search algorithm.static voidmergeSort(byte[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(byte[] a, int fromIndex, int toIndex, ByteComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSort(char[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(char[] a, int fromIndex, int toIndex, CharComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSort(double[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(double[] a, int fromIndex, int toIndex, DoubleComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSort(float[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(float[] a, int fromIndex, int toIndex, FloatComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSort(int[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(int[] a, int fromIndex, int toIndex, IntComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSort(long[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(long[] a, int fromIndex, int toIndex, LongComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSort(short[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidmergeSort(short[] a, int fromIndex, int toIndex, ShortComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidmergeSortInPlace(int[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.static voidquickSort(byte[] a, int fromIndex, int toIndex, ByteComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidquickSort(char[] a, int fromIndex, int toIndex, CharComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidquickSort(double[] a, int fromIndex, int toIndex, DoubleComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidquickSort(float[] a, int fromIndex, int toIndex, FloatComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidquickSort(int[] a, int fromIndex, int toIndex, IntComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidquickSort(long[] a, int fromIndex, int toIndex, LongComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidquickSort(short[] a, int fromIndex, int toIndex, ShortComparator c) Sorts the specified range of the specified array of elements according to the order induced by the specified comparator.static voidSorts the specified range of the receiver into ascending order, according to the natural ordering of its elements.static voidSorts the specified range of the receiver into ascending order, according to the natural ordering of its elements.static voidquickSort(Object[] a, int fromIndex, int toIndex, Comparator c) Sorts the specified range of the specified array according to the order induced by the specified comparator.static voidquickSort(Object[] a, Comparator c) Sorts the specified array according to the order induced by the specified comparator.
-
Constructor Details
-
Sorting
protected Sorting()Makes this class non instantiable, but still let's others inherit from it.
-
-
Method Details
-
binarySearchFromTo
public static int binarySearchFromTo(byte[] list, byte key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(char[] list, char key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(double[] list, double key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(float[] list, float key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(int[] list, int key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(long[] list, long key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(Object[] list, Object key, int from, int to, Comparator comparator) Searches the list for the specified value using the binary search algorithm. The list must be sorted into ascending order according to the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).If the list is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which instance will be found.
- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.comparator- the comparator by which the list is sorted.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - Throws:
ClassCastException- if the list contains elements that are not mutually comparable using the specified comparator.- See Also:
-
binarySearchFromTo
public static int binarySearchFromTo(short[] list, short key, int from, int to) Searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
list- the list to be searched.key- the value to be searched for.from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
binarySearchFromTo
Generically searches the list for the specified value using the binary search algorithm. The list must must be sorted (as by the sort method) prior to making this call. If it is not sorted, the results are undefined: in particular, the call may enter an infinite loop. If the list contains multiple elements equal to the specified key, there is no guarantee which of the multiple elements will be found.- Parameters:
from- the leftmost search position, inclusive.to- the rightmost search position, inclusive.- Returns:
- index of the search key, if it is contained in the list;
otherwise,
(-(insertion point) - 1). The insertion point is defined as the the point at which the value would be inserted into the list: the index of the first element greater than the key, orlist.length, if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found. - See Also:
-
mergeSort
public static void mergeSort(byte[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSort
public static void mergeSort(char[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSort
public static void mergeSort(double[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSort
public static void mergeSort(float[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSort
public static void mergeSort(int[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSort
public static void mergeSort(long[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSort
public static void mergeSort(short[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
mergeSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
mergeSortInPlace
public static void mergeSortInPlace(int[] a, int fromIndex, int toIndex) Sorts the specified range of the specified array of elements.This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the receiver into ascending order, according to the natural ordering of its elements. All elements in this range must implement theComparableinterface. Furthermore, all elements in this range must be mutually comparable (that is,e1.compareTo(e2)must not throw aClassCastExceptionfor any elementse1ande2in the array).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.
-
quickSort
Sorts the specified range of the receiver into ascending order, according to the natural ordering of its elements. All elements in this range must implement theComparableinterface. Furthermore, all elements in this range must be mutually comparable (that is,e1.compareTo(e2)must not throw aClassCastExceptionfor any elementse1ande2in the array).- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.- Throws:
IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length
-
quickSort
Sorts the specified range of the specified array according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the receiver.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified array according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.
- Parameters:
a- the array to be sorted.c- the comparator to determine the order of the receiver.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-
quickSort
Sorts the specified range of the specified array of elements according to the order induced by the specified comparator. All elements in the range must be mutually comparable by the specified comparator (that is,c.compare(e1, e2)must not throw aClassCastExceptionfor any elementse1ande2in the range).This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
The sorting algorithm is a modified mergesort (in which the merge is omitted if the highest element in the low sublist is less than the lowest element in the high sublist). This algorithm offers guaranteed n*log(n) performance, and can approach linear performance on nearly sorted lists.
- Parameters:
a- the array to be sorted.fromIndex- the index of the first element (inclusive) to be sorted.toIndex- the index of the last element (exclusive) to be sorted.c- the comparator to determine the order of the array.- Throws:
ClassCastException- if the array contains elements that are not mutually comparable using the specified comparator.IllegalArgumentException- iffromIndex > toIndexArrayIndexOutOfBoundsException- iffromIndex < 0ortoIndex > a.length- See Also:
-