java.lang.Object
com.aoapps.hodgepodge.sort.FastQSort
- All Implemented Interfaces:
ComparisonSortAlgorithm<Object>
,SortAlgorithm<Object>
A quick sort demonstration algorithm
SortAlgorithm.java
Adapted from Denis Ahrens' FastQSortAlgorithm, which was derived from Sun's example QSortAlgorithm.
2003-11-06 - Dan Armstrong - To avoid worst-case scenarios, if the quickSort recursion depth exceeds (int)(10*Math.log(list.size()))
,
the algorithm will quit and a HeapSort
will be performed.
- Version:
- \@(#)QSortAlgorithm.java 1.3, 29 Feb 1996 extended with TriMedian and InsertionSort by Denis Ahrens with all the tips from Robert Sedgewick (Algorithms in C++). It uses TriMedian and InsertionSort for lists shorts than 4. <fuhrmann@cs.tu-berlin.de>
- Author:
- James Gosling, Kevin A. Smith
-
Method Summary
Modifier and TypeMethodDescriptionprotected static <T> int
compare
(List<T> list, int i, int j, Comparator<? super T> comparator, SortStatistics stats) protected static <T> int
compare
(T[] array, int i, int j, Comparator<? super T> comparator, SortStatistics stats) protected static <T> int
compare
(T o1, T o2, Comparator<? super T> comparator, SortStatistics stats) protected static <T> T
get
(List<T> list, int i, SortStatistics stats) protected static <T> T
get
(T[] array, int i, SortStatistics stats) static FastQSort
boolean
isStable()
Checks if this is a stable sort.protected static <T> void
set
(List<T> list, int i, T o, SortStatistics stats) protected static <T> void
set
(T[] array, int i, T o, SortStatistics stats) <T extends E>
void<T extends E>
voidsort
(List<T> list, SortStatistics stats) <T extends E>
voidsort
(List<T> list, Comparator<? super T> comparator) <T> void
sort
(List<T> list, Comparator<? super T> comparator, SortStatistics stats) <T extends E>
voidsort
(T[] array) <T extends E>
voidsort
(T[] array, SortStatistics stats) <T extends E>
voidsort
(T[] array, Comparator<? super T> comparator) <T> void
sort
(T[] array, Comparator<? super T> comparator, SortStatistics stats) protected static <T> void
swap
(List<T> list, int i, int j, SortStatistics stats) protected static <T> void
swap
(T[] array, int i, int j, SortStatistics stats)
-
Method Details
-
getInstance
-
isStable
public boolean isStable()Description copied from interface:SortAlgorithm
Checks if this is a stable sort. A stable sort will keep elements with equal values in their same relative order. -
sort
- Specified by:
sort
in interfaceComparisonSortAlgorithm<Object>
-
sort
- Specified by:
sort
in interfaceComparisonSortAlgorithm<Object>
-
sort
- Specified by:
sort
in interfaceSortAlgorithm<E>
-
sort
public <T extends E> void sort(T[] array) - Specified by:
sort
in interfaceSortAlgorithm<E>
-
sort
- Specified by:
sort
in interfaceSortAlgorithm<E>
-
sort
- Specified by:
sort
in interfaceSortAlgorithm<E>
-
sort
- Specified by:
sort
in interfaceComparisonSortAlgorithm<E>
-
sort
- Specified by:
sort
in interfaceComparisonSortAlgorithm<E>
-
compare
protected static <T> int compare(List<T> list, int i, int j, Comparator<? super T> comparator, SortStatistics stats) -
compare
protected static <T> int compare(T[] array, int i, int j, Comparator<? super T> comparator, SortStatistics stats) -
compare
protected static <T> int compare(T o1, T o2, Comparator<? super T> comparator, SortStatistics stats) -
get
-
get
-
set
-
set
-
swap
-
swap
-