import modeSorted from "./mode_sorted.js";
import numericSort from "./numeric_sort.js";
/**
* [众数](https://en.wikipedia.org/wiki/Mode_%28statistics%29)是
* 数据集中出现频率最高的元素。当存在多个相同频率的众数时,
* 本算法将返回最后遇到的那个值。
*
* 这是[集中趋势度量](https://en.wikipedia.org/wiki/Central_tendency)方法,
* 用于寻找数据集的典型中心值。
*
* 本算法时间复杂度为`O(n log(n))`,因为需要先对数组进行排序,
* 再进行`O(n)`复杂度的众数搜索。
*
* @param {Array<number>} x 输入数组
* @returns {number} 众数
* @example
* mode([0, 0, 1]); // => 0
*/
function mode(x) {
// 数组排序确保遍历时每个数值仅处理一次
return modeSorted(numericSort(x));
}
export default mode;