Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Comparator ¶
type Comparator interface { // Compare will return a value indicating how this comparator // compares with the provided comparator. A negative number // indicates this comparator is less than the provided comparator, // a 0 indicates equality, and a positive number indicates this // comparator is greater than the provided comparator. Compare(Comparator) int }
Comparator defines items that can be sorted. It contains a single method allowing the compare logic to compare one comparator to another.
type Comparators ¶
type Comparators []Comparator
Comparators defines a typed list of type Comparator.
func MultithreadedSortComparators ¶
func MultithreadedSortComparators(comparators Comparators) Comparators
MultithreadedSortComparators will take a list of comparators and sort it using as many threads as are available. The list is split into buckets for a bucket sort and then recursively merged using SymMerge.
func SymMerge ¶
func SymMerge(u, w Comparators) Comparators
SymMerge will perform a symmetrical merge of the two provided lists. It is expected that these lists are pre-sorted. Failure to do so will result in undefined behavior. This function does make use of goroutines, so multithreading can aid merge time. This makes M*log(N/M+1) comparisons where M is the length of the shorter list and N is the length of the longer list.
func (Comparators) Len ¶
func (c Comparators) Len() int
Len returns an int indicating the length of this list of comparators.
func (Comparators) Less ¶
func (c Comparators) Less(i, j int) bool
Less returns a bool indicating if the comparator at index i is less than the comparator at index j.
func (Comparators) Swap ¶
func (c Comparators) Swap(i, j int)
Swap swaps the values at positions i and j.