Отсортировать элементы массива методом линейного выбора - Turbo Pascal

Формулировка задачи:

Дан целочисленный вектор А(n). Отсортировать его элементы методом линейного выбора с подсчётом

Код к задаче: «Отсортировать элементы массива методом линейного выбора - Turbo Pascal»

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.

15   голосов, оценка 4.267 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы