text: 'use strict';
  /* @flow */
  
  var numericSort = require('./numeric_sort'),
      modeSorted = require('./mode_sorted');
  
  /**
   * The [mode](http://bit.ly/W5K4Yt) is the number that appears in a list the highest number of times.
   * There can be multiple modes in a list: in the event of a tie, this
   * algorithm will return the most recently seen mode.
   *
   * This is a [measure of central tendency](https://en.wikipedia.org/wiki/Central_tendency):
   * a method of finding a typical or central value of a set of numbers.
   *
   * This runs on `O(nlog(n))` because it needs to sort the array internally
   * before running an `O(n)` search to find the mode.
   *
   * @param {Array<number>} x input
   * @returns {number} mode
   * @example
   * mode([0, 0, 1]); // => 0
   */
  function mode(x /*: Array<number> */)/*:number*/ {
      // Sorting the array lets us iterate through it below and be sure
      // that every time we see a new number it's new and we'll never
      // see the same number twice
      return modeSorted(numericSort(x));
  }
  
  module.exports = mode;
  