Trait rdxsort::RdxSortTemplate
[−]
[src]
pub trait RdxSortTemplate { fn cfg_nbuckets() -> usize; fn cfg_nrounds() -> usize; fn get_bucket(&self, round: usize) -> usize; fn reverse(round: usize, bucket: usize) -> bool; }
Generic Radix Sort implementation
Works by splitting the work in rounds. During every round, the data is sorted into buckets and
is then collected again. Rounds are count from 0
to (exclusive) cfg_nrounds()
.
The number of buckets is fixed for all rounds. That does not mean that the template has to use all of them, since unused buckets are just empty and have no effect on the collected results. Same hold for the number of rounds. Over-booking one or both of them wastes resources of course.
WARNING: The result returned from get_bucket()
is not checked. Wrong implementations may
crash the program, or destroy the world, or both!!!
Required Methods
fn cfg_nbuckets() -> usize
Sets the number of buckets used by the generic implementation.
fn cfg_nrounds() -> usize
Sets the number of rounds scheduled by the generic implementation.
fn get_bucket(&self, round: usize) -> usize
Returns the bucket, depending on the round.
This should respect the radix, e.g.:
- if the number of buckets is
2
and the type is an unsigned integer, then the result is the bit starting with the least significant one. - if the number of buckets is
8
and the type is an unsigned integer, then the result is the byte starting with the least significant one.
Never return a bucker greater or equal the number of buckets. See warning above!
fn reverse(round: usize, bucket: usize) -> bool
Describes the fact that the content of a bucket should be copied back in reverse order after a certain round.
Implementors
impl<T> RdxSortTemplate for [T; 0] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 1] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 2] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 3] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 4] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 5] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 6] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 7] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 8] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 9] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 10] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 11] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 12] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 13] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 14] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 15] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 16] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 17] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 18] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 19] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 20] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 21] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 22] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 23] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 24] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 25] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 26] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 27] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 28] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 29] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 30] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 31] where
T: RdxSortTemplate,impl<T> RdxSortTemplate for [T; 32] where
T: RdxSortTemplate,impl RdxSortTemplate for bool
impl RdxSortTemplate for char
impl RdxSortTemplate for f32
impl RdxSortTemplate for f64
impl RdxSortTemplate for i8
impl RdxSortTemplate for i16
impl RdxSortTemplate for i32
impl RdxSortTemplate for i64
impl RdxSortTemplate for isize
impl RdxSortTemplate for ()
impl<A> RdxSortTemplate for (A,) where
A: RdxSortTemplate,impl<A, B> RdxSortTemplate for (A, B) where
A: RdxSortTemplate,
B: RdxSortTemplate,impl<A, B, C> RdxSortTemplate for (A, B, C) where
A: RdxSortTemplate,
B: RdxSortTemplate,
C: RdxSortTemplate,impl RdxSortTemplate for u8
impl RdxSortTemplate for u16
impl RdxSortTemplate for u32
impl RdxSortTemplate for u64
impl RdxSortTemplate for usize