12 stable releases
1.2.10  Aug 16, 2020 

1.2.9  Aug 13, 2020 
1.2.2  Jul 25, 2020 
#988 in Algorithms
83KB
1.5K
SLoC
sorting_rs
Sorting algorithms implemented in Rust.
Usage
 Add this dependency and please consider it's version into your Cargo.toml:
[dependencies]
sorting_rs = "1.2.0"
 Use available sorting algorithms in your Rust code:
use sorting_rs::*;
 API for every sorting function is pretty the same: you just have to pass
mutable reference:
&mut [T]
, orvec![T, T, T, ...]
.T
should havePartialOrd
trait, sometimes you may needCopy
orClone
traits, though all implementations try to avoid this kind of additional requirements.  For more information about origin of algorithms and implementation details, please read modules documentation. Wikipedia is nice starting point too.
This library contains following sorting algorithms:
Sorting algorithm  Features and downsides  Worstcase performance O(): comparisons; swaps  Bestcase performance O(): comparisons; swaps  Space complexity O() 

Bingo  aims to be faster than selection sort if there are duplicates  n + m ^{2} 
nm 

Bitonic  method based on building a sorting network  nlog ^{2}n 
nlog ^{2}n 
nlog ^{2}n 
Bubble  bad for sorted or reversed input  n ^{2}; n ^{2} 
n ; 1 
1 
Cocktail  little performance improvement over bubble sort  n ^{2} 
n 
1 
Comb  speeds up when data is nearly sorted  n ^{2} 
nlogn 
1 
Cycle  uses minimum amount of writes, good for memory with limited TBW  n ^{2} 
n ^{2} 
1 
Gnome  simple and slow, works with one item at a time  n ^{2} 
n 
1 
Heap  independent of data distribution  nlogn 
nlogn 
1 
Weak Heap  independent of data distribution, decreased number of comparisons  nlogn 
nlogn 
1 
NHeap  should be faster than default heap. N = 3  nlogn 
nlogn 
1 
Bottomup Heap  upgraded version of heapsort with decreased number of comparisons  nlogn 
nlogn 
1 
Insertion  simple, but less effective than quicksort, heapsort or merge sort  n ^{2}; n ^{2} 
n ; 1 
1 
Merge  independent of data distribution  nlogn 
nlogn 
n 
Merge Bottomup  independent of data distribution, modified version of mergesort  nlogn 
nlogn 
n 
Oddeven  presented to be effective on processors with local interconnections  n ^{2} 
n 
1 
Oddeven Batcher  more efficient version of oddeven sort  log ^{2}n 
log ^{2}n 
logn ^{2} 
Pancake  swaps data a lot and not so effective in practice  n ^{3}; 2n  3 
n ^{2} 
n 
Quick  bad for sorted or reversed input  n ^{2} 
nlogn 
logn 
Quick dual  enchanced version of quicksort  n ^{2} 
2nlnn 
logn 
Ksort  quicksort variant, faster than heap at less than 7 million elements  n ^{2} 
nlog _{2}n 
logn 
Selection  the least number of swaps among all the algorithms  n ^{2}; n 
n ^{2}; 1 
1 
Double selection  modified selection sort with more workload, but better efficiency  n ^{2}; n 
n ^{2}; 1 
higher than Selection 
Shellsort  it is optimization of insertion sort  n ^{3/2} or nlogn ^{2} 
nlogn 
1 
Slow  it's slow, who would ever need it?  
Smooth  variant of heapsort, good for nearly sorted data  nlogn 
n 
1 
Stooge  it's a bit faster than slow sort  n ^{2.7095} 
n 
New algorithms implementations are planned in future