Package org.apache.lucene.util

# Class Sorter

java.lang.Object
org.apache.lucene.util.Sorter

Direct Known Subclasses:
  `InPlaceMergeSorter`, `IntroSorter`, `MSBRadixSorter`, `StableMSBRadixSorter.MergeSorter`, `StringSorter`, `TimSorter`

public abstract class Sorter extends Object
Base class for sorting algorithms implementations.

There are a number of subclasses to choose from that vary in performance and stability. We suggest that you pick the first from this ranked list that meets your requirements:

1. `MSBRadixSorter` for strings (array of bytes/chars). Not a stable sort.
2. `StableMSBRadixSorter` for strings (array of bytes/chars). Stable sort.
3. `IntroSorter`. Not a stable sort.
4. `InPlaceMergeSorter`. When the data to sort is typically small. Stable sort.
5. `TimSorter`. Stable sort.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`Sorter()`
Sole constructor, used for inheritance.

## Method Summary

Modifier and Type
Method
Description
`protected abstract int`
`compare(int i, int j)`
Compare entries found in slots `i` and `j`.
`protected int`
`comparePivot(int j)`
Compare the pivot with the slot at `j`, similarly to `compare(i, j)`.
`protected void`
`setPivot(int i)`
Save the value at slot `i` so that it can later be used as a pivot, see `comparePivot(int)`.
`abstract void`
`sort(int from, int to)`
Sort the slice which starts at `from` (inclusive) and ends at `to` (exclusive).
`protected abstract void`
`swap(int i, int j)`
Swap values at slots `i` and `j`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Sorter

protected Sorter()
Sole constructor, used for inheritance.

## Method Details

### compare

protected abstract int compare(int i, int j)
Compare entries found in slots `i` and `j`. The contract for the returned value is the same as `Comparator.compare(Object, Object)`.

### swap

protected abstract void swap(int i, int j)
Swap values at slots `i` and `j`.

### setPivot

protected void setPivot(int i)
Save the value at slot `i` so that it can later be used as a pivot, see `comparePivot(int)`.

### comparePivot

protected int comparePivot(int j)
Compare the pivot with the slot at `j`, similarly to `compare(i, j)`.

### sort

public abstract void sort(int from, int to)
Sort the slice which starts at `from` (inclusive) and ends at `to` (exclusive).