
Быстрый поиск
Введите фрагмент названия статьи для поиска
Поиск подстроки в строке по алгоритму Кнута-Морриса-Пратта
11.06.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter

Поиск подстроки в строке по алгоритму Кнута-Морриса-Пратта
Алгоритм Кнута-Морриса-Пратта, он же классический "КМП-алгоритм" - один из самых эффективных алгоритмов поиска подстроки в строке. Оптимизация достигается за счет того, что при возникновении несоответствия само искомое слово содержит достаточно информации, чтобы определить, где может начаться следующее совпадение, минуя лишние проверки. Скорость работы алгоритма линейно зависит от объема входных данных, то есть невозможно разработать более эффективный алгоритм с точки зрения вычислительной сложности.
Читать статью целиком »
Просмотров: 833 | Комментариев: 1
Сортировка перемешиванием на Ассемблере
26.05.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сортировка перемешиванием, она же шейкерная или двунаправленная сортировка - оптимизированная разновидность алгоритма пузырьковой сортировки. В процессе сортировки выполняется многократный проход по массиву, соседние элементы сравниваются и, в случае необходимости, меняются местами. Массив просматривается поочередно справа налево и слева направо, из-за этого алгоритм получил свое название. В результате каждого прогона крупные и мелкие элементы массива поочередно перемещаются в конец и начало массива соответственно. Границы рабочей части массива, то есть той части массива, где происходит движение, устанавливаются в месте последнего обмена на каждой итерации.Code (Assembler) : Убрать нумерацию
- ;----------------------------------------------------------------
- ; Функция сортировки массива DWORD перемешиванием
- ; by ManHunter / PCL (www.manhunter.ru)
- ;----------------------------------------------------------------
- ; Параметры:
- ; lpArray - указатель на массив DWORD
- ; dLen - количество элементов в массиве
- ;----------------------------------------------------------------
- proc shaker_sort lpArray:DWORD, dLen:DWORD
- pusha
- mov esi,[lpArray]
- ; left
- mov eax,1
- ; right
- mov ebx,[dLen]
- cmp ebx,2
- jb .loc_ret
- dec ebx
- .loc_loop_main:
- ; swap_flag = false
- xor edi,edi
- mov ecx,eax
- .loc_loop_1:
- cmp ecx,ebx
- ja .loc_done_1
- mov edx,dword [esi+ecx*4-4]
- cmp dword [esi+ecx*4],edx
- ; Для сортировки по возрастанию заменить на ja
- jna @f
- push dword [esi+ecx*4-4]
- push dword [esi+ecx*4]
- pop dword [esi+ecx*4-4]
- pop dword [esi+ecx*4]
- ; swap_flag = true
- inc edi
- @@:
- inc ecx
- jmp .loc_loop_1
- .loc_done_1:
- dec ebx
- mov ecx,ebx
- .loc_loop_2:
- cmp ecx,eax
- jb .loc_done_2
- mov edx,dword [esi+ecx*4]
- cmp dword [esi+ecx*4-4],edx
- ; Для сортировки по возрастанию заменить на jb
- jnb @f
- push dword [esi+ecx*4-4]
- push dword [esi+ecx*4]
- pop dword [esi+ecx*4-4]
- pop dword [esi+ecx*4]
- ; swap_flag = true
- inc edi
- @@:
- dec ecx
- jmp .loc_loop_2
- .loc_done_2:
- inc eax
- or edi,edi
- jnz .loc_loop_main
- .loc_ret:
- popa
- ret
- endp
Читать статью целиком »
Просмотров: 615 | Комментариев: 7
Сортировка вставками на Ассемблере
13.05.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter

Сортировка вставками на Ассемблере
Сортировка вставками - это алгоритм сортировки, который преобразует массив данных путем поочередного включения каждого элемента в упорядоченную последовательность элементов. Он подразумевает разделение массива на отсортированную и неотсортированную части. На каждом шаге из неотсортированной части выбирается элемент и вставляется в правильное место в отсортированной части. И так продолжается до тех пор, пока весь набор входных данных не будет отсортирован.
Читать статью целиком »
Просмотров: 808 | Комментариев: 0
Создание файла XLSX на PHP без сторонних библиотек
26.01.2024 | Категория: Web-мастеру и не только | Автор: ManHunter

Создание файла XLSX на PHP без сторонних библиотек
В предыдущей статье я рассказал, как можно легко извлекать данные из файлов в формате XLSX. Раз можно извлекать, значит можно и генерировать такие файлы, тем более, что их формат уже разобран. Если требуется создавать файлы только со статичными данными, без формул, сводных таблиц, графиков и прочей красоты, то совсем не обязательно таскать тяжеленные библиотеки, можно воспользоваться приведенным в статье кодом.
Читать статью целиком »
Просмотров: 2132 | Комментариев: 0
Чтение файла XLSX на PHP без сторонних библиотек
15.01.2024 | Категория: Web-мастеру и не только | Автор: ManHunter

Чтение файла XLSX на PHP без сторонних библиотек
На работе возникла задача читать данные из таблиц формата XLSX. Много лет для этого я использовал замечательную библиотеку PHPExcel, но по ряду технических причин дальнейшее ее использование не представляется возможным. При этом задачу никто не отменял. Поэтому пришлось рисовать свое решение, максимально простое и быстрое.
Читать статью целиком »
Просмотров: 2652 | Комментариев: 8


