Сортировка вставками на Ассемблере
Сортировка вставками - это алгоритм сортировки, который преобразует массив данных путем поочередного включения каждого элемента в упорядоченную последовательность элементов. Он подразумевает разделение массива на отсортированную и неотсортированную части. На каждом шаге из неотсортированной части выбирается элемент и вставляется в правильное место в отсортированной части. И так продолжается до тех пор, пока весь набор входных данных не будет отсортирован.Алгоритм работает следующим образом. Массив разделяется на две части: отсортированную (в начале пустая) и неотсортированную. На каждом шаге выбирается элемент из неотсортированной части массива. Этот элемент вставляется в отсортированную часть массива так, чтобы отсортированная часть оставалась упорядоченной. Граница между отсортированной и неотсортированной частями смещается, и процесс повторяется для оставшихся элементов. После выполнения всех шагов весь массив становится отсортированным.
Code (Assembler) : Убрать нумерацию
- ;----------------------------------------------------------------
- ; Функция сортировки массива DWORD методом вставок
- ; by ManHunter / PCL (www.manhunter.ru)
- ;----------------------------------------------------------------
- ; Параметры:
- ; lpArray - указатель на массив DWORD
- ; dLen - количество элементов в массиве
- ;----------------------------------------------------------------
- proc insertion_sort lpArray:DWORD, dLen:DWORD
- pusha
- mov esi,[lpArray]
- mov ecx,[dLen]
- xor edi,edi
- inc edi
- .loc_loop_1:
- mov ebx,dword [esi+edi*4]
- mov edx,edi
- dec edx
- .loc_loop_2:
- cmp edx,0
- jb @f
- cmp dword [esi+edx*4],ebx
- jbe @f
- push dword [esi+edx*4+4]
- push dword [esi+edx*4]
- pop dword [esi+edx*4+4]
- pop dword [esi+edx*4]
- dec edx
- jmp .loc_loop_2
- @@:
- mov dword [esi+edx*4+4],ebx
- inc edi
- cmp edi,ecx
- jb .loc_loop_1
- .loc_ret:
- popa
- ret
- endp
В приложении пример программы с исходным текстом, которая сортирует массив DWORD'ов методом вставок.
Просмотров: 323 | Комментариев: 0
Метки: Assembler, полезные функции
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет
Добавить комментарий
Заполните форму для добавления комментария