Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Min & Max


AlexNO ©   (2002-11-19 10:43:00) 

Как вычислить минимальное и максимальное значения из диапазона чисел, количество которых заранее неизвестно? Больше интересует алгоритм, чем код, но от последнего тоже не откажусь ;)


han_malign   (2002-11-19 12:24:00) [1]

inc(LongWord(ptr),sizeof(<тип>)); <тип>(ptr^)... :)))))


nejest   (2002-11-19 11:46:00) [2]

Я имею ввиду что данные можно хранить не только в масивах. А про масивы всё изложил han_malign но ведь можно хранить просто в памяти и тогда придётся работать с указателями, но суть останется та же.


han_malign   (2002-11-19 11:21:00) [3]

В данном случае прямой перебор самый быстрый, даже если делать сортировку по мере вставки - те же самые сравнения, только для каждого элемента их больше(даже в случае дихотомии или бинарного дерева). Способ итерирования элементов значения не имет, что x[i], что x:=x.next; x.value.


AndreyAgSoft   (2002-11-19 11:15:00) [4]

>nejestТы имеешь ввиду скорость работы алгоритма?


nejest   (2002-11-19 11:09:00) [5]

Алгоритм будет сильно зависеть от того как ты будешь хранить эти числа. т.е. укажи как будешь их хранить.


AndreyAgSoft   (2002-11-19 11:06:00) [6]

Алгоритм поиска минимального значения из массива Mus
var
Mus:array of integer;
Min:Integer;
begin
//Здесь вводим массив
//********************
//*****************************

//Находим минимальный элемент
Min:=Mus[0];
for i:=1to High(Mus) do
Begin
if Mus[i]<Min then Min:=Mus[i];
end;
//Отображаем его
showmessage(IntToStr(Min));
end;


han_malign   (2002-11-19 10:59:00) [7]

max:=data[Low(data)];
min:=data[Low(data)];
for i:=Low(data)+1 to High(data)do begin
if(data[i]>max)then max:=data[i];
if(data[i]<min)then min:=data[i];
end;

- если числа вводятся последовательно, то тоже самое, только не в цикле, а по мере ввода, [min,max] - текущий диапазон последовательности(min и max - называют аккумуляторами результата).


Наверх

Титульная страница Поиск, карта сайта Написать письмо