Метод вставок - Pascal
Формулировка задачи:
Задано массив на 10000 элементов целого типа integer. Использовать метод вставок. Упорядочить его за убыванием значений его НЕ НУЛЕВЫХ элементов. Результат записать в типизированный файл.
То есть, например, если в массиве числа 1, 0,-5,-2, 0, 3, 4, то должно получиться -5, 0, -2, 1, 0, 3, 4.
Как поставить нулевые элементы на ихние места?
Программу сделал пока без типизированных файлов.
Решение задачи: «Метод вставок»
textual
Листинг программы
program ins_sort_exc_0; const n=7; a:array[1..n] of integer = ( 1, 0, -5, -2, 0, 3, 4); var i,j,k:byte; z:integer; begin for i:=1 to n do write(a[i],' '); writeln; for i:=2 to n do if a[i]<>0 then begin z:=a[i]; j:=i-1; k:=0; while (j>=1) and ((a[j]>z) or (a[j]=0)) do begin if a[j]<>0 then begin a[j+1+k]:=a[j]; k:=0 end else k:=k+1; j:=j-1 end; a[j+1+k]:=z end; for i:=1 to n do write(a[i],' '); readln end.
Объяснение кода листинга программы
- Объявлены константы и переменные:
- n = 7 (количество элементов в массиве)
- a = (1, 0, -5, -2, 0, 3, 4) (массив из 7 элементов)
- i, j, k = byte (переменные для цикла)
- z = integer (переменная для временного хранения элемента)
- Выводится содержимое массива a на экран.
- Начинается второй цикл, который выполняет метод вставок для сортировки массива a по возрастанию:
- Если a[i] не равно 0, то начинается внутренняя часть цикла.
- Значение a[i] сохраняется в переменной z.
- Переменная j инициализируется значением i-1.
- Переменная k инициализируется значением 0.
- Пока j больше или равно 1 и (a[j] больше z или a[j] равно 0), выполняется следующая часть цикла:
- Если a[j] не равно 0, то выполняется следующая часть цикла:
- a[j+1+k] присваивается значение a[j].
- k увеличивается на 1.
- Если a[j] равно 0, то k увеличивается на 1.
- j уменьшается на 1.
- После выхода из внутреннего цикла, a[j+1+k] присваивается значение z.
- Выводится содержимое массива a на экран.
- Программа ожидает ввода данных с клавиатуры (возможно, для проверки).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д