Заполнить массив из 10 элементов случайными числами в интервале[-10.. 10] и отсортировать по убыванию.

язык паскаль

btslove2 btslove2    2   03.10.2019 00:02    1

Ответы
ДАШУНЯ1311 ДАШУНЯ1311  09.10.2020 12:48

ответ:uses crt;

const SIZE=10;

type MyMassive:ARRAY[1..SIZE] OF INTEGER;

var MyMass:MyMassive;

i:integer;

procedure quickSort(var numbers:MyMassive; left,right:integer);

var

 pivot:integer; // разрешающий элемент

begin

  

  l_hold := left; //левая граница

  r_hold := right; // правая граница

  pivot := numbers[left];

  while (left < right) do // пока границы не сомкнутся

  begin

    while ((numbers[right] <= pivot) and (left < right)) do

      dec(right); // сдвигаем правую границу пока элемент [right] больше [pivot]

    if NOT (left = right) then // если границы не сомкнулись

    begin

      numbers[left] := numbers[right]; // перемещаем элемент [right] на место разрешающего

      Inc(left); // сдвигаем левую границу вправо

    end;

    while ((numbers[left] >= pivot) AND (left < right)) do

      Inc(left); // сдвигаем левую границу пока элемент [left] меньше [pivot]

    if NOT (left = right) then// если границы не сомкнулись

    begin

      numbers[right] := numbers[left]; // перемещаем элемент [left] на место [right]

      Dec(right); // сдвигаем правую границу вправо

    end;

  end;

  numbers[left] := pivot; // ставим разрешающий элемент на место

  pivot := left;

  left := l_hold;

  right := r_hold;

  if (left < pivot) then// Рекурсивно вызываем сортировку для левой и правой части массива

    quickSort(numbers, left, pivot - 1);

  if (right > pivot) then

    quickSort(numbers, pivot + 1, right);

End;

begin

clrscr;

writeln('первоначальное заполнение массива:');

for i:=1 To SIZE do

begin

MyMass[i]:=Trunc(random(20))-10;

write(' ',MyMass[i]);

end;

writeln;

quickSort(MyMass, 1, SIZE);

writeln('результат:');

for i = 1 to SIZE do write(' ',MyMass[i]);

writeln;

  readkey();

end.

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика