Лучший алгоритм определения максимума и минимума в массиве чисел? - PullRequest
11 голосов
/ 20 октября 2008

Я использую здесь псевдокод, но это в JavaScript. С максимально эффективным алгоритмом я пытаюсь найти максимум и минимум, учитывая массив положительных целых чисел. Это то, что я придумал, но я не думаю, что это, вероятно, лучше, и просто задавался вопросом, есть ли у кого-нибудь еще какие-либо предложения.

var low = 1;
var high = 1;
for ( loop numbers ) {
    if ( number > high ) {
        high = number;
    }
    if ( low == 1 ) {
        low = high;
    }
    if ( number < low ) {
        low = number;
    }
}

Ответы [ 14 ]

1 голос
/ 20 октября 2008

Единственная дополнительная оптимизация, которую я бы предложил, это оптимизация самого цикла. Считать быстрее, чем считать в JavaScript.

0 голосов
/ 11 ноября 2009

этот алгоритм работает для O (n) и больше не требуется дополнительной памяти для хранения элементов ...

enter code here
int l=0,h=1,index,i=3;
    if(a[l]>a[h])
                 swap(&a[l],&a[h]);
    for(i=2;i<9;i++)
    {
                                if(a[i]<a[l])
                                {
                                      swap(&a[i],&a[l]);  
                                }
                                if(a[i]>a[h])
                                {
                                             swap(&a[i],&a[h]);
                                }
    }
    printf("Low:  %d  High:  %d",a[0],a[1]);
0 голосов
/ 20 октября 2008

Если список еще не отсортирован, это лучшее, что вы можете сделать. Вы можете сохранить сравнение, выполнив следующее (в псевдокоде):

low = +INFINITY
high = -INFINITY
for each n in numbers:
    if n < low:
        low = n
    if n > high:
        high = n

Это операция O (n), которая в принципе является наилучшей из возможных.

0 голосов
/ 20 октября 2008

В питоне:

>>> seq = [1, 2, 3, 4, 5, 6, 7]
>>> max(seq)
7
>>> min(seq)
1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...