Пирамидальная сортировка - Free Pascal
Формулировка задачи:
Взяла отсюда https://ru.wikipedia.org/wiki/%D0%9F...B2%D0%BA%D0%B0 переименовала переменные и подправила "почерк" на свой вкус. Но возникают глюки - почти все ок, кроме двух первых и двух последних элементов - они оказываются поменяны местами. Ну то есть первые два меняются местами, или последние два меняются местами. Подскажите пожалуйста что исправить, а то нет времени качественно разбирать алгоритм
Решение задачи: «Пирамидальная сортировка»
textual
Листинг программы
// тут реализация headsort var a : array[1 .. 20] of integer = (1, 2, 3, 4, 5, 6, 47, 8, 39, 10, 11, 12, 353, 14, 515, 16, 17, 618, 19, 20); i : integer; begin writeln('before:'); for i in a do write(i:4); writeln; writeln('after:'); headsort(a); for i in a do write(i:4); end.
Объяснение кода листинга программы
В данном коде реализована сортировка пирамидальным методом, также известная как сортировка Хоара.
- Объявлен массив
a
типа array[1 .. 20] of integer, который содержит список чисел для сортировки. - В цикле for выводятся все элементы массива
a
с помощью функции write(). Каждый элемент выводится с помощью функции write(i:4), гдеi
- это индекс элемента в массиве. - После вывода всех элементов вызывается функция headsort(a), которая выполняет сортировку пирамидальным методом.
- После сортировки выводятся все элементы массива
a
с помощью функции write(). Вот список не более 20 элементов, оформленный в виде кода на языке Pascal: - var a: array[1 .. 20] of integer = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
- i: integer;
- begin
- writeln('before:');
- for i in a do write(i:4);
- writeln;
- writeln('after:');
- headsort(a);
- for i in a do write(i:4);
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д