2013-09-03 4 views
-3

Я хочу создать функцию max, которая вернет максимальное значение.Что такое логика метода Math.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;

Но я не хочу использовать встроенные функции i.e Math.max. Также нет прототипа. Итак, как я могу это сделать?

Любое руководство будет оценено по достоинству.

+1

Так что случилось с вашей текущей 'max' реализации? Что означает «нет прототипа» в данном случае? – DCoder

+0

Вы можете использовать метод выбора, чтобы получить максимум от массива ' – Shadow

+0

Это звучит неплохо. – Itay

ответ

0

Попробуйте

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; 
} 
+0

Начиная с 'arr [0]' отлично, если вы знаете, что массив имеет хотя бы один элемент; вы даже можете пропустить первый элемент, начиная с «i = 1». – poke

+0

@shadow Спасибо. Но как это сделать с помощью функции? – Samrat

+0

Передайте свой массив в качестве аргумента для функции max – Shadow

0

Простой на самом деле. Это можно сделать в 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). 

Хотя, ваш метод, кажется, работает хорошо.

Смежные вопросы