Re: Ускорение поиска максимума...

From
Vladislav Gusev (2:5059/9.75)
To
Sergey Andrianov
Date
2002-12-29T19:01:30Z
Area
RU.ALGORITHMS
                     Приветствую тебя Sergey !!!
 Было это [26 декабря 2002]. Sergey Andrianov писал к Alexander Chelmodeev.

 AC>> max:=ar[0];
 AC>> min:=ar[0];
 AC>> for n:=1 to high(ar) do
 AC>>  begin
 AC>>    max:= (max+ar[n] + Abs(max-ar[n])) div 2 ;
 AC>>    min:= (min+ar[n] - Abs(min-ar[n])) div 2 ;
 AC>>  end;
 SA>         А как ты собираешься реализовать Abs() без сравнений? На
 SA> поразрядной логике что ли? :)

На ней самой, только Abs нам не нужен ;-))
Для массива не отрицательных чисел :

===  begin main.c ===
#include <stdio.h>

int ar[10] = {6, 3, 4, 2, 5, 9, 10, 3, 22, 12 };

int main()
{
    int i, min, max;

    min = ar[0];
    max = ar[0];
    for(i = 0; i < sizeof(ar)/sizeof(int); i++)
    {
        min = min + ((ar[i] - min) &  ((ar[i] - min) >> 31));
        max = max + ((ar[i] - max) & ~((ar[i] - max) >> 31));
    }

    printf("Min = %d\nMax = %d\n", min, max);

    return 0;
}
===   end main.c  ===

                                              С уважением Vlad.

--- GoldED+/386 1.1.4.5
 * Origin: End Of All Hope (2:5059/9.75)