Отсортировать элементы массива методом линейного выбора - Turbo Pascal
Формулировка задачи:
Дан целочисленный вектор А(n). Отсортировать его элементы методом линейного выбора с подсчётом
Решение задачи: «Отсортировать элементы массива методом линейного выбора»
textual
Листинг программы
const n = 15;
var a, b, cnt: array[1..n] of integer;
i, j, k: integer;
begin
randomize;
{формирование и вывод исходного массива}
writeln('Исходный массив:');
for i := 1 to n do
begin
a[i] := -99 + random(199);
write(a[i]:4)
end;
writeln;
{инициализация массива счётчиков}
for i := 1 to n do cnt[i] := 1;
{формирование массива счётчиков}
for i := 1 to n - 1 do
begin
k := 0; {количество меньших элементов для i-го элемента}
for j := i + 1 to n do
if a[i] < a[j]
then cnt[j] := cnt[j] + 1
else k := k + 1; {в счётчики больших элементов добавляем единицы}
cnt[i] := cnt[i] + k
end;
{перезаписываем массив в соответствии со значениями массива счётчиков}
for i := 1 to n do b[cnt[i]] := a[i];
{выводим отсортированный массив}
writeln('Отсортированный массив:');
for i := 1 to n do write(b[i]:4);
readln
end.