Сортировка+выбором


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

В алгоритме сортировки прямым выбором (программа 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 КОН_ПРОГ .data masdb 44.55.12,42,94,18.06,67 ;задаем массив n-$-mas X db 0 К dw 0 .code
 * prg4_99.asm - программа на ассемблере сортировки прямым выбором.
 * внешний цикл - по 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

Сложные структуры данных-[Электронный ресурс]. Режим доступа: http://exzilnetik.narod.ru/html/aeaaa12.html