Simple, space-efficient algorithm to compute the median of an accumulation of elements.
O(1)
)O(D)
space, D being the number of different samples, not the total number of samplesO(log(N))
T: Clone + Ord
std
Faster than other implementations if there are samples having the same value. If this is not your case, you should use another implementation.
```rust use median_accumulator::*;
let mut acc = MedianAcc::new();
asserteq!(acc.getmedian(), None); acc.push(7); asserteq!(acc.getmedian(), Some(MedianResult::One(7))); acc.push(5); asserteq!(acc.getmedian(), Some(MedianResult::Two(5, 7))); acc.push(7); asserteq!(acc.getmedian(), Some(MedianResult::One(7))); ```
If you ever encounter an unreachable
panic, please file an issue or send me an e-mail.
CopyLeft 2022 Pascal Engélibert
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.