Здравствуйте
Да да я знаю что можно найти темы по этому вопросу но всё же прошу сильно не ругайтесь...
Уже 3 день не могу сделать нормальную сортировку...
Помогите плиз подправить именно ЭТОТ код...
Основная проблема в том что практически всё работает но когда происходит поиск очередного самого маленького числа происходит его всплытие в самое начало списка не смотря на то что оно было изначально на нужной позиции...
В общем нужно сделать так что если число изначально на своей позиции не всплывало...
Уже перевёл код в pascal дабы проще было делать отладку но результата 0((...
Код:
USES CRT;
var mass:array[1..10] of integer;
open,min,buf,x_buf:integer;
x,xx,up_1,up_2,up_x,z:integer;
Begin
mass[1]:=4;
mass[2]:=9;
mass[3]:=5;
mass[4]:=9;
mass[5]:=7;
mass[6]:=1;
mass[7]:=3;
mass[8]:=8;
mass[9]:=2;
mass[10]:=1;
for x:=1 to 10 do Write(mass[x]);
Writeln;
Repeat
if open=0 then begin
Inc(xx);
min:=mass[xx];
for x:=xx to 10 do if min>=mass[x] then begin
min:=mass[x];
x_buf:=x;
end;
open:=1;
up_1:=x_buf-1;
up_2:=x_buf;
z:=1;
end;
if z=0 then begin
Dec(up_1);
Dec(up_2);
end else z:=0;
buf:=mass[up_1];
mass[up_1]:=min;
mass[up_2]:=buf;
if up_1=xx then open:=0;
for x:=1 to 10 do Write(mass[x]);
Writeln;
ReadKey;
ClrScr;
Until 2>3;
End.