Автор: Jaxx 27.04.2004 21:38
Дана целочисленная матрица с положительными и отрицательными числами (то есть одномерный массив из 10 элементов). Переставить элементы так, чтобы сначала шли отрицательные, а потом положительные элементы, не нарушая их взаимного расположения в каждой группе (то есть если был массив «1 -2 3 -4 5 -6 7 -8 9 -10», то должен стать массивом следующим «-2 -4 -6 -8 -10 1 3 5 7 9»).
Нужно довольно срочно (в ближайшие 2 дня).
Заранее спасибо.
Автор: Dark 28.04.2004 6:56
Вот лови, здесь 2 раза использован один и тот же алгоритм сортировки, помоему пузырьковая =)
Код
uses crt;
var mas:array[0..19] of integer;
i:byte; {счетчик}
t:boolean;{ключ}
temp:integer;
begin
clrscr;
randomize;
{Генерируем массив}
for i:=0 to 19 do mas[i]:=random(100)-50;
for i:=0 to 19 do write(mas[i],' ');
writeln;
{Сортируем по возрастанию ВСЕ элементы}
t:=false;
while (t=false) do
begin
t:=true;
for i:=0 to 18 do
if (mas[i+1]<mas[i]) then
begin
temp:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=temp;
t:=false;
end;
end;
for i:=0 to 19 do write(mas[i],' ');
writeln;
{Сортируем по убыванию ТОЛЬКО ОТРИЦАТЕЛЬНЫЕ элементы}
t:=false;
while (t=false) do
begin
t:=true;
for i:=0 to 18 do
begin
if (mas[i+1]>=0) then break;
if (mas[i+1]>mas[i]) then
begin
temp:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=temp;
t:=false;
end;
end;
end;
for i:=0 to 19 do write(mas[i],' ');
writeln;
readkey;
end.
Надеюсь поможет =) :p5:
Автор: Jaxx 30.04.2004 18:09
Я тоже наделся...Не помогло. Все равно не понимаю. Отсортировать на отрицательные и положительные получается, а вот по порядку их расположить - не очнь выходит.