rust_dsa

Function majority_element

Source
pub fn majority_element<I>(elements: I) -> Option<I::Item>
where I: Iterator + Clone, I::Item: Eq,
Expand description

Returns the majority element of an iterator, if one exists.

This is an implementation of the MJRTY algorithm described by Boyer and Moore in “MJRTY - A Fast Majority Vote Algorithm.”

§Example

use rust_dsa::majority_element;

let ints = vec![1, 2, 1, 3, 1, 4, 3, 2, 1, 1, 1];
let winner = majority_element(ints.into_iter());
assert_eq!(winner, Some(1));

let strs = vec!["a", "c", "b", "a"];
let winner = majority_element(strs.into_iter());
assert_eq!(winner, None);