|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Vladislav Gusev 2:5059/9.75 29 Dec 2002 20:01:30 To : Sergey Andrianov Subject : Re: Ускорение поиска максимума... --------------------------------------------------------------------------------
Приветствую тебя 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() без сравнений? Hа
SA> поразрядной логике что ли? :)
Hа ней самой, только 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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/28793e0f4694.html, оценка из 5, голосов 10
|