Упражнение 3 (Одномерные массивы)

Дан массив чисел. Расставить их по убыванию.

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

1. Выбирается наибольший элемент.

2. Меняем его местами с первым элементом.

3. Повторяем процесс с оставшимися N — 1 элементами, N — 2 элементами и т. д., до тех пор, пока не останется один, самый маленький элемент.

Как видно из описания алгоритма, сама сортировка осуществляется с помощью двух вложенных циклов:

FOR J := 1 ТО N-1 DO

BEGIN

NEW := MAS[N];

K:=N;

FOR I := N DOWNTO J DO

IF MAS[I]>NEW THEN

BEGIN К := I;

NEW := MAS[I]

END;

MAS[K] := MAS[J];

MAS[J] := NEW;

END;

Цикл FOR J := 1 TO N-1 DO

определяет место J, на которое будет поставлен наибольший элемент, найденный в цикле: FOR I := N DOWNTO J DO.

PROGRAM PRG4_3;

CONST M = 100;

VAR MAS : ARRAY[1..M] OF INTEGER;

I, J, K, NEW, N : INTEGER;

BEGIN

WRITE(‘BBEДИTE РАЗМЕР МАССИВА N = ‘);

READLN(N);

WRITELN(‘BBEДИTE ‘, N, ‘ ЭЛЕМЕНТОВ МАССИВА’);

FOR I := 1 TO N DO

READ(MAS[I]);

WRITELN;

FOR J := 1 TO N-1 DO

BEGIN

NEW := MAS[N];

К :=N;

FOR I := N DOWNTO J DO

IF MAS[I]>NEW THEN

BEGIN

К := I;

NEW := MAS[I]

END;

MAS[K] := MAS[J];

MAS[J] := NEW;

END;

FOR I := 1 TO N DO

WRITE(MAS[I] : 4);

WRITELN

END.

Для решения задачи:

— формируем тело программы и описываем переменные;

— вводим длину массива N, значение элементов массива;

— последовательно, справа налево, просматриваем элементы и находим наибольший элемент NEW := MAS[I], запоминая его порядковый номер К := I;

— меняем местами первый элемент и найденный;

— выводим результат.

Переменные:

MAS — массив чисел;

N — размер массива;

I, J — переменные циклов;

К — порядковый номер наибольшего элемента;

NEW — значение наибольшего элемента.

Добавить комментарий