Source: compare.js

/**
 * @method
 * @file compare.js
 * @desc For compare max and min.
 * @createDate 2018.7.11.
 * @author yhzheng
 */
"use strict";
/**
 * @method
 * @param {array} numbers A array
 * @returns The max number of numbers
 * @desc To get the max number of numbers
 */
function max(numbers) {
    var maxNum,number;
    if (typeof numbers[0] === "number"){
        maxNum = numbers[0];
        number = numbers[0];
    } else {
        maxNum = numbers[0].value();
        number = numbers[0];
    }
    for (var i in numbers) {
        if (typeof numbers[i] === "number") {
            if (numbers[i] > maxNum) {
                maxNum = numbers[i];
                number = numbers[i];
            }
        } else {
            if (numbers[i] > maxNum) {
                maxNum = numbers[i].value();
                number = numbers[i];
            }
        }
    }
    return number;
}
/**
 * @method
 * @param {array} numbers A array
 * @returns The min number of numbers
 * @desc To get the min number of numbers
 */
function min(numbers) {
    var minNum,number;
    if (typeof numbers[0] === "number"){
        minNum = numbers[0];
        number = numbers[0];
    } else {
        minNum = numbers[0].value();
        number = numbers[0];
    }
    for (var i in numbers){
        if (numbers[i] < minNum){
            if (typeof numbers[i] === "number"){
                minNum = numbers[i];
            } else {
                minNum = numbers[i].value();
            }
            number = numbers[i];
        }
    }
    return number;
}
/**
 * @method
 * @param {array} numbers A array
 * @param {function} cmp A function
 * @returns The sorted number of numbers (cmp)
 * @desc To sort the numbers (cmp)
 */
function sort(numbers,cmp) {
    var tmp;
    for (var i = 0 ; i < numbers.length ; i++){
        for (var j = 0 ; j < (numbers.length - 1) ; j++){
            if (cmp(numbers[j],numbers[j + 1])){
                tmp = numbers[j];
                numbers[j] = numbers[j + 1];
                numbers[j + 1] = tmp;
            }
        }
    }
    return numbers;
}
/**
 * @method
 * @param {array} numbers A array
 * @returns The sorted number of numbers (From max to min)
 * @desc To sort the numbers (From max to min)
 */
function sort_min(numbers) {
    var tmp;
    for (var i = 0 ; i < numbers.length ; i++){
        for (var j = 0 ; j < (numbers.length - 1) ; j++){
            if (typeof numbers[j] === "number"){
                if (numbers[j] > numbers[j + 1]){
                    tmp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = tmp;
                }
            } else {
                if (numbers[j].value() > numbers[j + 1].value()){
                    tmp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = tmp;
                }
            }
        }
    }
    return numbers;
}
/**
 * @method
 * @param {array} numbers A array
 * @returns The sorted number of numbers (From max to min)
 * @desc To sort the numbers (From max to min)
 */
function sort_max(numbers) {
    var tmp;
    for (var i = 0 ; i < numbers.length ; i++){
        for (var j = 0 ; j < (numbers.length - 1) ; j++){
            if (typeof numbers[j] === "number"){
                if (numbers[j] < numbers[j + 1]){
                    tmp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = tmp;
                }
            } else {
                if (numbers[j].value() < numbers[j + 1].value()){
                    tmp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = tmp;
                }
            }
        }
    }
    return numbers;
}
module.exports.max = max;
module.exports.min = min;
module.exports.sort_min = sort_min;
module.exports.sort_max = sort_max;
module.exports.sort = sort;