Программа с использованием сортировки вставкой - Pascal
Формулировка задачи:
Создать масив, в котором n элементов. Упорядочить вторую чверть по спаданию, последнюю - по возрастанию, элементы, которые больше заданого числа n удвоить.
Решение задачи: «Программа с использованием сортировки вставкой»
textual
Листинг программы
var a:array[1..100] of integer; n,i,j,k,x,min:integer; begin repeat write('Введите размер массива число кратное 4 от 8 до 100 n='); readln(n); until (n in [8..100])and(n mod 4=0); randomize; writeln('Исходный массив'); for i:=1 to n do begin a[i]:=random(100); write(a[i]:4); end; writeln; k:=n div 4; for i:=k+2 to 2*k do begin x:=a[i]; j:=i-1; while (j>=1) and (a[j]<x) do begin a[j+1]:=a[j]; j:=j-1; end; a[j+1]:=x; end; for i:=3*k+2 to n do begin x:=a[i]; j:=i-1; while (j>=1) and (a[j]>x) do begin a[j+1]:=a[j]; j:=j-1; end; a[j+1]:=x; end; writeln('Сортировка 2 четверти по убыванию и 4 четверти по возрастанию'); for i:=1 to n do write(a[i]:4); writeln; write('Введите число для сравнения k='); readln(k); for i:=1 to n do if a[i]>k then a[i]:=2*a[i]; writeln('Элементы большие ',k,' удвоены'); for i:=1 to n do write(a[i]:4); end.
Объяснение кода листинга программы
- Объявлены переменные: a: массив из 100 целых чисел; n, i, j, k, x, min: целые числа.
- В цикле repeat-until пользователю предлагается ввести размер массива n, который должен быть кратным 4 от 8 до 100.
- Массив a заполняется случайными числами от 1 до 100.
- Размер массива a делится на 4, и в цикле for i:=k+2 to 2*k происходит сортировка первой половины массива по возрастанию, а затем второй половины массива по убыванию.
- В цикле for i:=3*k+2 to n происходит сортировка третьей и четвёртой четвертей массива по возрастанию и убыванию соответственно.
- Выводится отсортированный массив a.
- Пользователю предлагается ввести число k для сравнения.
- В цикле for i:=1 to n происходит проверка: если элемент массива a[i] больше k, то он удваивается.
- Выводится отсортированный массив a с удвоенными элементами.