Сборник по задачам и примерам Assembler


Сортировка массивов - часть 3


Сортировка прямым выбором

В алгоритме сортировки прямым выбором (программа prg4_99.asm) на каждом шаге просмотру подвергается несортированная правая часть массива. В ней ищется очередной минимальный элемент. Если он найден, то производится его перемещение на место крайнего левого элемента несортированной правой части массива.

ПРОГРАММА prg4_99


//prg4_99 - программа на псевдоязыке сортировки прямым выбором //Вход: mas[n] - неупорядоченная последовательность байтовых двоичных значений. //Выход: mas[n] - упорядоченная последовательность байтовых двоичных значений. // .

ПЕРЕМЕННЫЕ

INT_BYTE n=8; //количество элементов в сортируемом массиве INT_BYTE mas[n]; //сортируемый массив размерностью п (О..п-l) INTJYTE X: i=0: j=0: k=0 // i. j, k - индексы НАЧ_ПРОГ

ДЛЯ i:=l ДО n-1 //i изменяется в диапазоне 1..П-1 НАЧ_6ЛОК_1

//присвоение исходных значений для очередного шага k:=i: Х: = raas[i]

ДЛЯ j:-1+l ДО n //j изменяется в диапазоне 1+1..п ЕСЛИ mas[j]<X TO НАЧ_БЛ0К_2

k:=j: x:= mas[j] К0Н_БЛ0К_2

mas[k]:= mas[i]; mas[i]:=X КОН_БЛОК_1 КОН_ПРОГ

;prg4_99.asm - программа на ассемблере сортировки прямым выбором.

.data

masdb 44.55.12,42,94,18.06,67 ;задаем массив

n-$-mas

X db 0

К dw 0

.code

:внешний цикл - по 1

mov сх.л-1

mov si ,0 cycll: push ex

mov k.si :k:=i

mov al ,mas[si]

movx.al ;x:=mas[i]

push si :временно сохраним i - теперь j=I+l

incsi :j=I+l

сложенный цикл - по j

mov al ,n

sub ax.si

mov ex,ax количество повторений внутреннего цикла по j cycl2: mov al ,mas[si]

cmpal ,x

ja ml

mov k.si ;k:=j

moval ,mas[si]

movx.al :x:=mas[k] ml: inc si :j:=j+l

loop cycl2

pop si

mov al ,mas[s1]

movdi Л

mov mas[di],al :mas[k]:=mas[i]

mov al,x

mov mas[si],al :mas[i]:-x

inc si

pop ex

loop cycll

Первый вариант сортировки прямым обменом

Этот метод основан на сравнении и обмене пар соседних элементов до их полного упорядочивания (программа prg4_101.asm). В народе этот метод называется методом пузырьковой сортировки. Действительно, если упорядочиваемую последовательность расположить не слева направо, а сверху вниз («слева» — это «верх»), то визуально каждый шаг сортировки будет напоминать всплытие легких (меньших по значению) пузырьков вверх.




- Начало -  - Назад -  - Вперед -



Книжный магазин