Uses old Rust 2015
|new 0.2.0||Nov 19, 2023|
|0.1.4||Aug 20, 2019|
|0.1.2||Apr 9, 2018|
#488 in Data structures
102 downloads per month
This is a simple implementation of the algorithm described by 'adamax' at:
It implements a Queue with push and pop, with FIFO semantics, and a get_extrema() method, all with amortized O(1) time complexity.
The get_extrema method returns the extrema of all items in the queue, using a user-supplied metric. Examples of extrema-functions are max, min, but not 'average' or 'mean'.
This structure can be used to implement a super-efficient max/min function for a sliding window of many samples.
extern crate sliding_extrema; let mut queue = sliding_extrema::sliding_max(); queue.push(42); queue.push(15); queue.push(8); assert_eq!(queue.get_extrema().unwrap(),42); queue.pop(); assert_eq!(queue.get_extrema().unwrap(),15);
See docs and test for more advanced examples.
The structure is covered by an automatic fuzz-test, that should provide 100% test coverage.