Был бы очень благодарен, если бы кто-нибудь помог дописать пузырьковую сортировку:
Uses crt;
Const
mas : Array [0..9] of Byte = (2, 1, 24, 3, 53, 7, 18, 114, 11, 17);
Var
i : Integer;
Begin
asm
lea di,mas
lea si,mas
mov cx,9
@loop2:
mov al,[di]
inc di
mov ah,[di]
inc di
cmp al,ah
jng @endif
{Обмен}
mov bl,al
mov dl, [di-1]
mov [di-2], dl
mov [di-1], al
{Конец обмена. Этот обмен надо проделать в цикле.}
@endif:
loop @loop2
end;
end.
Моя программа пробегая по массиву меняет только пары элементов, если
mas[i] < mas [i + 1]. Т. е. меняет местами (если это требуется) только елементы 0 и 1, 2 и 3, 3 и 4... А должен после обмена пары mas[i] и mas[i + 1],
двигаться к началу массива пока элемент не встанет в нужное место, примерно так:
for j := i downto 1Я уже как только не пробовал дописать цикл назад с заменами, не выходит <_<
begin
if (mas[j] <= mas[j - 1]) then
{обменять}
else
break;
end;
Помогоите дописать кому не в лом, плиз.
Заранее благодарен