Pattern-defeating quickselect
The algorithm is based on pattern-defeating quicksort by Orson Peters, published at:
https://github.com/orlp/pdqsort
It is also heavily adapted from the Rust implementation of pdqsort
(https://github.com/stjepang/pdqsort) and Rust's own sort_unstable.
Properties
- Best-case running time is
O(n). - Worst-case running time is
O(n log n). - Does not allocate additional memory.
- Uses
#![no_std].
Examples
let mut v = ;
let k = 3;
select;
let kth = v;
assert!;
assert!;
select_by;
let kth = v;
assert!;
assert!;
select_by_key;
let kth = v.abs;
assert!;
assert!;