Сортировка вставками - Pascal ABC (18447)
Формулировка задачи:
Здравствуйте, помогите пожалуйста, нужно написать программу сортировки одномерного массива по заданным алгоритмам
Решение задачи: «Сортировка вставками»
textual
Листинг программы
uses crt; const n=20; type mas=array [1..n] of integer; function poisk(a:mas;i:integer):integer; var m:integer; begin m:=1; while a[m]<a[i] do m:=m+1; poisk:=m end; procedure vstavka(var a:mas;i,m:integer); var buf,k:integer; begin buf:=a[i]; for k:=i-1 downto m do a[k+1]:=a[k]; a[m]:=buf; end; var a:mas; i,m:integer; begin randomize; writeln('Исходный массив'); for i:=1 to n do begin a[i]:=random(100); write(a[i]:4); end; writeln; for i:=2 to n do if a[i]<a[i-1] then begin m:=poisk(a,i); vstavka(a,i,m) end; writeln('Результат:'); for i:=1 to n do write(a[i]:4); end.
Объяснение кода листинга программы
- Объявлены переменные: n, mas, i, m, buf, k.
- Функция poisk ищет позицию элемента в массиве, сравнивая его с остальными элементами.
- Процедура vstavka меняет местами элементы массива, начиная с позиции i до m включительно, с помощью цикла for.
- Переменная a инициализируется случайными значениями от 1 до 100.
- Выводится исходный массив.
- Если текущий элемент больше предыдущего, то меняется его позиция с помощью функции poisk и процедуры vstavka.
- Выводится отсортированный массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д