Найти ошибку в методе упорядочения Шелла - PascalABC.NET
Формулировка задачи:
народ мне сбросили задачу которая маё упорядочивать элементы методом шелла но она почемута не работает посмотрите где здесь ошибка есть
Решение задачи: «Найти ошибку в методе упорядочения Шелла»
textual
Листинг программы
program z_1;
uses
crt;
type
massiv = array[1..6] of integer;
var
i, j, n, d, count: integer;
A: massiv;
procedure Shell(A: massiv; n: integer);
var
i: integer;
begin
d := n;
d := d div 2;
while (d > 0) do
begin
for i := 1 to n - d do
begin
j := i;
while ((j > 0) and (A[j] > A[j + d])) do
begin
count := A[j];
A[j] := A[j + d];
A[j + d] := count;
j := j - 1;
end;
end;
d := d div 2;
end;
writeln;
for i := 1 to n do write(' ', A[i]);
end;
begin
write('Количество элементов в массиве: '); read(n);
for i := 1 to n do
begin write(i, '-й элемент:'); readln(A[i]); end;
write('Отсортированный массив: ');
Shell(A, n);
end.
Объяснение кода листинга программы
Список действий в коде:
- Объявление переменных и массива
i,j,n,d,count- целочисленные переменныеA- массив, содержащий элементы типаinteger
- Ввод данных
- Ввод количества элементов в массиве с помощью функции
read(n) - Ввод элементов массива с помощью цикла и функции
readln(A[i])
- Ввод количества элементов в массиве с помощью функции
- Выполнение сортировки
- Вызов функции
Shell(A, n)для сортировки массиваA
- Вызов функции
- Вывод результата
- Вывод отсортированного массива с помощью цикла и функции
write(i, '-й элемент:'), readln(A[i])Процедура сортировки Шелла реализует алгоритм сортировки слиянием. Она работает следующим образом:
- Вывод отсортированного массива с помощью цикла и функции
- Инициализация
- Значение
dинициализируется значениемn, то есть количеством элементов в массиве - Затем
dделится на 2, чтобы определить размер первой группы элементов для сортировки
- Значение
- Сортировка
- В цикле, пока
dбольше 0, выполняется следующая последовательность действий: - Внутренний цикл для каждой пары элементов в первой группе
- Если текущий элемент больше следующего элемента в группе, они меняются местами
- После внутреннего цикла, элементы сгруппировываются и сортируются
- Значение
dуменьшается вдвое, чтобы перейти к следующей группе элементов
- В цикле, пока
- Вывод
- Отсортированный массив выводится с помощью цикла и функции
write(i, '-й элемент:'), readln(A[i])
- Отсортированный массив выводится с помощью цикла и функции