Отсортировать элементы одномерного массива целых случайных чисел по возрастанию методом сортировки подсчётом - PascalABC.NET
Формулировка задачи:
Добрый день. Помогите, пожалуйста, с написанием программы на Pascal ABC.NET со следующим заданием:
"Отсортировать элементы одномерного массива целых случайных чисел по возрастанию методом сортировки подсчётом". Помимо отсортированного массива нужно вывести массив, в котором производился подсчёт. Заранее спасибо.
Решение задачи: «Отсортировать элементы одномерного массива целых случайных чисел по возрастанию методом сортировки подсчётом»
textual
Листинг программы
const mi = 19; var a: array [1..mi] of integer; c: array [-99..99] of integer; i, j, k: integer; begin randomize; {инициализацию можно убрать, это для совместимости с другими диалектами паскаля} writeln('Исходный массив:'); for i := 1 to mi do begin a[i] := random(199) - 99; write(a[i]:4) end; writeln; for i := -99 to 99 do c[i] := 0; {инициализацию можно убрать, это для совместимости с другими диалектами паскаля} for i := 1 to mi do inc(c[a[i]]); j := 0; for i := -99 to 99 do for k := 1 to c[i] do begin inc(j); a[j] := i end; writeln('Отсортированный массив:'); for i := 1 to mi do write(a[i]:4); writeln; writeln('Массив, в котором производился подсчёт:'); for i := -99 to 99 do write(c[i]:4); readln {можно убрать, это для совместимости с другими диалектами паскаля} end.
Объяснение кода листинга программы
В данном коде реализован метод сортировки подсчётом для одномерного массива целых случайных чисел.
- Синтаксис и объявление переменных:
- Задано значение mi, которое определяет размер исходного массива a (var mi: integer).
- Объявлен одномерный массив a (var a: array [1..mi] of integer).
- Объявлен массив c, который будет использоваться для подсчёта количества каждого элемента в массиве a (var c: array [-99..99] of integer).
- Объявлены три переменные i, j, k типа integer (var i, j, k: integer).
- Инициализация:
- Выполнена инициализация генератора случайных чисел с помощью функции randomize (randomize).
- Массив c инициализирован нулями (for i := -99 to 99 do c[i] := 0).
- Заполнение исходного массива a:
- В цикле от 1 до mi заполняются элементы массива a случайными целыми числами в диапазоне от 0 до 199 (for i := 1 to mi do begin a[i] := random(199) - 99; write(a[i]:4)).
- Подсчёт количества каждого элемента в массиве a:
- В цикле от -99 до 99 заполняются элементы массива c, увеличиваясь на 1 при каждой встрече элемента в массиве a (for i := -99 to 99 do for k := 1 to c[i] do begin inc(j); a[j] := i end).
- Вывод отсортированного массива a:
- В цикле от 1 до mi выводятся элементы отсортированного массива a (for i := 1 to mi do write(a[i]:4)).
- Вывод массива c:
- Выводится массив c (writeln('Массив, в котором производился подсчёт:'); for i := -99 to 99 do write(c[i]:4)).
- Ввод для завершения работы программы:
- Добавлена возможность ввода для совместимости с другими диалектами паскаля (readln).