Sorting methods
INITIAL_TMP_STORAGE
MIN_GALLOP
MIN_MERGE
Le
MergeState
RunState
Sort
of Sort for &[mut T]
for MergeState<T>
MergeState
binarysort
copy_vec
count_run_ascending
gallop_left
gallop_right
merge_sort
- Merge sortmin_run_length
part
qsort
qsort3
quick_sort
- Quicksortquick_sort3
- Fancy quicksortreverse_slice
tim_sort
INITIAL_TMP_STORAGE
uint
MIN_GALLOP
uint
MIN_MERGE
uint
Le
type Le<T> = &pure fn(v1: &T, v2: &T) -> bool
MergeState
struct MergeState <T>{
mut min_gallop: uint,
runs: DVec<RunState>,
}
RunState
struct RunState {
base: uint,
len: uint,
}
Sort
qsort
fn qsort()
Sort
for &[mut T]
qsort
fn qsort()
MergeState<T>
push_run
fn push_run(run_base: uint, run_len: uint)
merge_at
fn merge_at(n: uint, array: &[mut T])
merge_lo
fn merge_lo(array: &[mut T], base1: uint, len1: uint, base2: uint, len2: uint)
merge_hi
fn merge_hi(array: &[mut T], base1: uint, len1: uint, base2: uint, len2: uint)
merge_collapse
fn merge_collapse(array: &[mut T])
merge_force_collapse
fn merge_force_collapse(array: &[mut T])
MergeState
fn MergeState<T>() -> MergeState<T>
binarysort
fn binarysort<T: Copy Ord>(array: &[mut T], start: uint)
copy_vec
fn copy_vec<T: Copy>(dest: &[mut T], s1: uint, from: &[const T], s2: uint,
len: uint)
count_run_ascending
fn count_run_ascending<T: Copy Ord>(array: &[mut T]) -> uint
gallop_left
fn gallop_left<T: Copy Ord>(key: &const T, array: &[const T], hint: uint) ->
uint
gallop_right
fn gallop_right<T: Copy Ord>(key: &const T, array: &[const T], hint: uint) ->
uint
merge_sort
fn merge_sort<T: Copy>(v: &[const T], le: Le<T>) -> ~[T]
Merge sort. Returns a new vector containing the sorted list.
Has worst case O(n log n) performance, best case O(n), but is not space efficient. This is a stable sort.
min_run_length
fn min_run_length(n: uint) -> uint
part
fn part<T: Copy>(arr: &[mut T], left: uint, right: uint, pivot: uint,
compare_func: Le<T>) -> uint
qsort
fn qsort<T: Copy>(arr: &[mut T], left: uint, right: uint, compare_func: Le<T>)
qsort3
fn qsort3<T: Copy Ord Eq>(arr: &[mut T], left: int, right: int)
quick_sort
fn quick_sort<T: Copy>(arr: &[mut T], compare_func: Le<T>)
Quicksort. Sorts a mut vector in place.
Has worst case O(n^2) performance, average case O(n log n). This is an unstable sort.
quick_sort3
fn quick_sort3<T: Copy Ord Eq>(arr: &[mut T])
Fancy quicksort. Sorts a mut vector in place.
Based on algorithm presented by ~[Sedgewick and Bentley] (http://www.cs.princeton.edu/~rs/talks/QuicksortIsOptimal.pdf). According to these slides this is the algorithm of choice for 'randomly ordered keys, abstract compare' & 'small number of key values'.
This is an unstable sort.
reverse_slice
fn reverse_slice<T>(v: &[mut T], start: uint, end: uint)
tim_sort
fn tim_sort<T: Copy Ord>(array: &[mut T])