Отсортировать массив в порядке убывания и найти разницу первого и последнего элементов - Pascal
Формулировка задачи:
Отсортировать массив x с n элементов в порядке убывания и найти разницу первого и последнего элементов массива.
Решение задачи: «Отсортировать массив в порядке убывания и найти разницу первого и последнего элементов»
textual
Листинг программы
{uses SysUtils} //Раскоментируй это, если у тебя не PascalABC.NET
type
int = integer;
uint = byte;
arr = array of int;
procedure quicksort(var mas:arr; first, last:int); //Быстрая сортировка
var i, l, x, buf:int;
begin
if not(first < last) then
exit;
x:= mas[(first + last) div 2];
i:= first;
l:= last;
while (i <= l) do
begin
while (mas[i] > x) do //Для возрастания поставь <
inc(i);
while (mas[l] < x) do //Для возрастания поставь >
dec(l);
if (i <= l) then
begin
buf:= mas[i];
mas[i]:= mas[l];
mas[l]:= buf;
inc(i);
dec(l);
end;
end;
quicksort(mas, first, l);
quicksort(mas, i, last);
end;
var
x:arr;
i:uint;
begin
writeln('Введите n - размер массива:');
read(i);
SetLength(x, i);
writeln('Введите массив:');
for i:= low(x) to high(x) do
read(x[i]);
quicksort(x, low(x), high(x));
writeln('Разница первого и последнего элементов отсортированног по убыванию массива: ', x[low(x)] - x[high(x)]);
end.
Объяснение кода листинга программы
- Объявляются пользовательские типы данных:
intкак псевдоним дляintegeruintкак псевдоним дляbytearrкак массив целых чисел
- Определяется процедура
quicksort, которая реализует алгоритм быстрой сортировки для сортировки массива в порядке убывания. - В основной программе:
- Объявляется переменная
xкак массивarr - Объявляется переменная
iкакuint
- Объявляется переменная
- Вводится размер массива
nи выделяется память для массиваxразмераn. - Пользователю предлагается ввести элементы массива.
- Осуществляется сортировка массива
xс использованием процедурыquicksort. - Выводится разница между первым и последним элементами отсортированного массива в порядке убывания.