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)