![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 - называют аккумуляторами результата).