Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на сортировку массива.

Автор: Emeks 19.06.2008 18:57

Здравствуйте!Подскажите,пожалуйста, как решить задачу: реализовать процедуру, организующую поиск максимального значения в массиве целых чисел из 15 элементов на основе быстрого рекурсивного алгоритма.Без рекурсии знаю как,а как с рекурсией ее решить нет. Буду очень благодарен.

Автор: volvo 19.06.2008 19:04

Цитата
Без рекурсии знаю как,а как с рекурсией ее решить нет
Вот и покажи, как ты делаешь это без рекурсии...

Цитата
на основе быстрого рекурсивного алгоритма
Рекурсия по определению медленнее итерации, так что быстрым как-раз будет итеративный алгоритм...

Автор: Emeks 19.06.2008 19:20

Цитата(volvo @ 19.06.2008 16:04) *

Вот и покажи, как ты делаешь это без рекурсии...

Рекурсия по определению медленнее итерации, так что быстрым как-раз будет итеративный алгоритм...

Без рекурсии(просто программа поиска,с выводом номера элемента):

Programm Poisk;
var
m:ARRAY[1..15] of real;
i:integer;
max:real;
t:integer;

BEGIN
FOR i:=1 TO 15 DO
BEGIN
Write('Введите элемент последовательности N',i);
Readln(m[i]);
End;
max:=m[1];
t:=1;
FOR i:=1 TO 15 DO
if m[i]>max then
begin
max:=m[i];
t:=i;
end;
Writeln('max=',max);
Writeln('Номер макс элемента',t);
Readln;
End.

.

Автор: volvo 19.06.2008 19:54

При чем здесь заявленная в названии темы сортировка - не понятно.. И почему ты пользовался Real, если речь идет о целочисленных элементах - тоже...

Рекурсивный поиск макс. значения выглядит, например, вот так:

program Poisk;

function max(n: integer; var a: array of integer): integer;
var
t: integer;
begin
if n > 0 then begin
t := max(n - 1, a); { <--- Рекурсия }
if a[n] > a[t] then max:= n else max:= t
end
else max := 0
end;

const
size = 15;
var
m: array[1 .. size] of integer;
i, index: integer;

begin
for i := 1 to 15 do begin
write('Введите элемент последовательности N', i);
readln(m[i]);
end;

index := max(size - 1, m) + 1;
writeln('Индекс = ', index, ' ; max = ', m[index]);
readln;
end.

Автор: Emeks 19.06.2008 20:11

Спасибо огромное! (Я написал пример который я могу написать а рекурсию я не знаю.Сортировка в моем понимании отбор нужного элемента в данном случае.Реал потому что это немного другая задача которую я уже выполнил.)