Дан массив A[1..N] и число B. Переставить числа в массиве таким образом, чтобы слева от некоторой границы стояли числа, меньшие или равные B, а справа от границы - большие или равные B.

Дан массив A[1..N] и число B. Переставить числа в массиве таким образом, чтобы слева от некоторой границы стояли числа, меньшие или равные B, а справа от границы - большие или равные B.
Гость
Ответ(ы) на вопрос:
Гость
Program MashaLukianova; uses crt; const n=12; var   mas:array[1..n] of integer;   b,i,left,right,temp:integer; begin   writeln('*** alphaues is thinking... ***');   writeln('***          OK             ***');   writeln();   write('Введите загадочное число B ');   readln(b);   writeln('Элементы массива:');   {создание и вывод начального массива}   randomize;     for i:=1 to n do       begin         mas[i]:=random(100)-50;         write (mas[i]:4);       end;   writeln();   left:=0;   right:=n;   while left <> right do         {просматриваем массив с концов к середине, пока "левый" и "правый" текущие элементы не встретятся}     begin       if mas[left+1]<=b then         {если текущий "левый" элемент меньше или равно В, то просто идём смотреть следующий }         begin           left:=left+1;         end         else           if mas[right]>=b then         {если текущий "правый" элемент больше или равно В, то просто идём смотреть следующий }             begin               right:=right-1;             end           else         {иначе меняем "левый" и "правый" местами}             begin               temp:= mas[left+1];               mas[left+1]:=mas[right];               mas[right]:=temp;               left:=left+1;               right:=right-1;             end;     end;   writeln();   {вывод массива-результата}   for i:=1 to n do       begin         write (mas[i]:4);       end;   writeln(); end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы