|
Colt 1.0.1 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--cern.colt.matrix.objectalgo.Sorting
Matrix Quicksorts. Come in two variants: a) Sorting according to the order induces by a user supplied comparator, b) sorting according to natural ordering. Natural ordering means cells must implement {@java.lang.Comparable}. In both variants, cells must not be null. All sorting algorithms are tuned quicksorts, 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.
Sorting
,
GenericSorting
,
java.util.Arrays
Method Summary | |
static ObjectMatrix1D |
quickSort(ObjectMatrix1D vector)
Sorts the vector into ascending order, according to the natural ordering. |
static ObjectMatrix1D |
quickSort(ObjectMatrix1D vector,
Comparator c)
Sorts the vector into ascending order, according to the order induced by the specified comparator. |
static ObjectMatrix2D |
quickSort(ObjectMatrix2D matrix,
int column)
Sorts the matrix rows into ascending order, according to the natural ordering of the matrix values in the given column. |
static ObjectMatrix2D |
quickSort(ObjectMatrix2D matrix,
ObjectMatrix1DComparator c)
Sorts the matrix rows according to the order induced by the specified comparator. |
static ObjectMatrix3D |
quickSort(ObjectMatrix3D matrix,
int row,
int column)
Sorts the matrix slices into ascending order, according to the natural ordering of the matrix values in the given [row,column] position. |
static ObjectMatrix3D |
quickSort(ObjectMatrix3D matrix,
ObjectMatrix2DComparator c)
Sorts the matrix slices according to the order induced by the specified comparator. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
public static ObjectMatrix1D quickSort(ObjectMatrix1D vector)
Example:
7, 1, 3, 1 |
==> 1, 1, 3, 7 |
vector
- the vector to be sorted.public static ObjectMatrix1D quickSort(ObjectMatrix1D vector, Comparator c)
Example:
// sort by sinus of cells ObjectComparator comp = new ObjectComparator() { public int compare(Object a, Object b) { Object as = Math.sin(a); Object bs = Math.sin(b); return as < bs ? -1 : as == bs ? 0 : 1; } }; sorted = quickSort(vector,comp);
vector
- the vector to be sorted.c
- the comparator to determine the order.public static ObjectMatrix2D quickSort(ObjectMatrix2D matrix, int column)
Example:
4 x 2 matrix: 7, 6 5, 4 3, 2 1, 0 |
column = 0; |
4 x 2 matrix: |
matrix
- the matrix to be sorted.column
- the index of the column inducing the order.IndexOutOfBoundsException
- if column < 0 || column >= matrix.columns().public static ObjectMatrix2D quickSort(ObjectMatrix2D matrix, ObjectMatrix1DComparator c)
Example:
// sort by sum of values in a row ObjectMatrix1DComparator comp = new ObjectMatrix1DComparator() { public int compare(ObjectMatrix1D a, ObjectMatrix1D b) { Object as = a.zSum(); Object bs = b.zSum(); return as < bs ? -1 : as == bs ? 0 : 1; } }; sorted = quickSort(matrix,comp);
matrix
- the matrix to be sorted.c
- the comparator to determine the order.public static ObjectMatrix3D quickSort(ObjectMatrix3D matrix, int row, int column)
The algorithm compares two 2-d slices at a time, determinining whether one is smaller, equal or larger than the other. Comparison is based on the cell [row,column] within a slice. Let A and B be two 2-d slices. Then we have the following rules
matrix
- the matrix to be sorted.row
- the index of the row inducing the order.column
- the index of the column inducing the order.IndexOutOfBoundsException
- if row < 0 || row >= matrix.rows() || column < 0 || column >= matrix.columns().public static ObjectMatrix3D quickSort(ObjectMatrix3D matrix, ObjectMatrix2DComparator c)
Example:
// sort by sum of values in a slice ObjectMatrix2DComparator comp = new ObjectMatrix2DComparator() { public int compare(ObjectMatrix2D a, ObjectMatrix2D b) { Object as = a.zSum(); Object bs = b.zSum(); return as < bs ? -1 : as == bs ? 0 : 1; } }; sorted = quickSort(matrix,comp);
matrix
- the matrix to be sorted.c
- the comparator to determine the order.
|
Colt 1.0.1 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |