Сортировка случайных чисел методом Шелла - Pascal
Формулировка задачи:
Выполнить сортировку одномерного массива А[20] случайных целых чисел по возрастанию методом Шелла. Вывести на экран все этапы сортировки. Pascal ABC. Помогите пожалуйста.
Решение задачи: «Сортировка случайных чисел методом Шелла»
textual
Листинг программы
uses crt; const b:array[1..5] of byte = (9,5,3,2,1); var a:array[0..20] of integer; n,i,j,k,gap,temp:integer; w:char; begin randomize; n:=10; writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=random(100); write(a[i]:4) end; writeln; writeln; for k:=1 to 5 do begin gap:=b[k]; for i:=gap to n do begin temp:=a[i]; j:=i-gap; while (temp<a[j]) and (j>=gap) do begin a[j+gap]:=a[j]; j:=j-gap; end; a[j+gap]:=temp; end; end; writeln('Отсортированный массив:'); for i:=1 to n do write(a[i]:4); readln end.
Объяснение кода листинга программы
- Установка начального значения переменной
n
равным 10. - Заполнение массива
a
случайными числами от 0 до 99. - Вывод исходного массива на экран.
- Заполнение переменной
gap
значением элемента массиваb
с индексом k. - Заполнение переменной
temp
значением элемента массиваa
с индексом i. - Заполнение переменной
j
значением i минус gap. - Пока элемент массива
temp
меньше элемента массиваa
с индексом j и j больше или равно gap, выполнять следующие действия:- Переместить элемент массива
a
с индексом j плюс gap в переменную temp. - Уменьшить значение переменной j на gap.
- Переместить элемент массива
- После завершения цикла поместить элемент массива
temp
в массивa
с индексом j плюс gap. - Повторять шаги 4-8 для всех значений переменной
k
. - Вывод отсортированного массива на экран.
- Чтение символа с клавиатуры для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д