Math.max方法背后的逻辑是什么

What is logic behind Math.max method?

本文关键字:是什么 背后 max 方法 Math      更新时间:2023-09-26

我想创建一个函数max,它将返回最大值数字。

到目前为止,我做到了:

function max() {
    var arr = [];
    for (var i in arguments) {
        arr.push(arguments[i]);
    }
    arr.sort(function (a, b) {
        return b - a;
    });
    return arr[0];
}
var test = max(30, 20, 50, 40, 100, 150, 5, 230);
var test2 = Math.max(30, 20, 50, 40, 100, 150, 5, 230);

两者均返回230;

但我不想使用内置功能,即Math.max。也没有原型。那么我该怎么做呢?

如有任何指导,我们将不胜感激。

试试这个

 function max(arr)   
 {
    var largest;
    if(arr.length>0)
    largest=arr[0];
    else 
    largest = 0;
    for(var i=0;i<arr.length;i++)
    {
      if(arr[i]>largest)
      largest = arr[i];
    }
    return largest;
 }

真的很简单。这可以在O(n)时间内通过循环通过array一次来完成。

在伪码中:

number := first item in list.
for each item in the list
    if(number < item)
        number := item.
    end if
end for
print("Max is: " + number).

尽管如此,你的方法似乎很有效。