Дан массив из N элементов . Каждый элемент равен 0, 1 или 2. Переставить элементы так,чтобы сначала располагались все нули, затем все единицы и, наконец все двойки.(дополнительный массив не использовать) Помогите пожалуйста.

Дан массив из N элементов . Каждый элемент равен 0, 1 или 2. Переставить элементы так,чтобы сначала располагались все нули, затем все единицы и, наконец все двойки.(дополнительный массив не использовать) Помогите пожалуйста.
Гость
Ответ(ы) на вопрос:
Гость
1. В "реальном мире" это решается примерно так: // PascalABC.NET 3.1, сборка 1198 от 11.03.2016 begin   var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;   a.Sorted.Println end. Тестовое решение: n= 15 1 2 0 2 2 0 2 0 2 0 0 1 0 0 2 0 0 0 0 0 0 0 1 1 2 2 2 2 2 2 2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают): // PascalABC.NET 3.1, сборка 1198 от 11.03.2016 const   nn=100; var   i,j,n,t:integer;   a:array[1..nn] of integer; begin   Write('n='); Read(n);   Randomize;   for i:=1 to n do begin     a[i]:=Random(3);     Write(a[i],' ')     end;   Writeln;   for i:=1 to n-1 do     for j:=1 to n-1 do       if a[j]>a[j+1] then begin         t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t         end;   for i:=1 to n do Write(a[i],' ');   Writeln; end. Тестовое решение: n=15 0 1 1 0 2 1 0 2 1 2 1 0 0 2 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2
Не нашли ответ?
Ответить на вопрос
Похожие вопросы