sorting_rs
Sorting algorithms implemented in Rust
Usage
- Add this dependency with it's version into your Cargo.toml:
...
[]
= "1.1.0"
...
- Use available sorting algorithms in your Rust code:
use *;
...
- For more information about origin of algorithms and implementation details, please read modules documentation
This library contains following sorting algorithms:
New algorithms implementations are planned, smooth sort is not ready at the moment, for example
| Sorting algorithm | Features and downsides | Worst-case performance O(): comparisons; swaps | Best-case performance O(): comparisons; swaps | Space complexity O() |
|---|---|---|---|---|
| Bubble | bad for sorted or reversed input | n2; n2 |
n; 1 |
n or 1 |
| Cocktail | little performance improvement over bubble sort | n2 |
n |
1 |
| Comb | speeds up when data is nearly sorted | n2 |
nlogn |
1 |
| Gnome | simple and slow, works with one item at a time | n2 |
n |
1 |
| Heap | independent of data distribution | nlogn |
nlogn or n |
n or 1 |
| Bottom-up Heap | upgraded version of heapsort with decreased number of comparisons | nlogn |
nlogn or n |
n or 1 |
| Insertion | simple, but less effective than quicksort, heapsort or merge sort | n2; n2 |
n; 1 |
n or 1 |
| Merge | independent of data distribution | nlogn |
nlogn or n |
n |
| Odd-even | presented to be effective on processors with local interconnections | n2 |
n |
1 |
| Odd-even (Batcher) | more efficient version of odd-even sort | log2n |
log2n |
log2n |
| Quick | bad for sorted or reversed input | n2 |
n |
n or logn |
| Selection | the least number of swaps among all the algorithms | n2; n |
n2; 1 |
1 |
| Shell | it is optimization of insertion sort | n2 or nlog2n |
nlogn or nlog2n |
n |
| Slow | it's slow, who would ever need it? | |||
| Smooth | variant of heapsort, good for nearly sorted data | nlogn |
n |
n or 1 |
| Stooge | it's a bit faster than slow sort | n2.7095 |
n |