Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7-10.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
78.85 Кб
Скачать

7.Методы поиска в таблицах.

  1. Линейный поиск - Простой последовательный просмотр таблицы с увеличением шаг за шагом той его части, где искомого элемента не обнаружено. Условия окончания такого поиска имеют вид:

  • Элемент найден, т. е. ai = x.

  • Весь массив просмотрен, и совпадения не обнаружено.

Среднее количество сравнений при работе данного алгоритма равно , где N – размер таблицы.

  1. Двоичный (логарифмический) поиск.

Поиск начинается с середины таблицы. Искомый элемент сравнивается с элементом, находящимся в середине таблицы. Он может быть больше, равным или меньше, чем проверяемая величина. Дальнейшие действия для каждого из элементов таблицы зависят от результата сравнения:

  • Если равно, то элемент найден.

  • Если больше, то поиск продолжается в верхней части таблицы.

  • Если меньше, то поиск продолжается в нижней части таблицы.

При таком поиске требуется сделать максимально проверок.

Для успешной работы алгоритма двоичного поиска необходимо выполнять следующее условие для размера таблицы:

  1. Поиск методом прямого доступа

Для достижения хорошей скорости при поиске нет необходимости иметь упорядоченную таблицу. Лучшие результаты достигаются при использовании неупакованной таблицы при условии ее избыточности. Улучшение может быть достигнуто путем заполнения таблицы случайным путем. Случайный порядковый номер К для данного элемента формируется из значения элемента. Если позиция с номером К пуста, то туда помещается новый элемент. В противном случае ищется другая позиция для размещения. Основная проблема - генерация случайного числа K для элемента. Решение – K = значение элемента / длина таблицы(Условием успешного применения такого метода- отсутствие общих множителей у размера таблицы и значения элемента) . Вторая проблема - создание процедуры, которой следует придерживаться, когда подготовленный элемент попал на занятую позицию. Решение – использование метода открытой адресации:

Пусть первая проба дает позицию с номером К и эта позиция уже занята. В этом случае проверяется следующая, (К+1)-ая позиция и т. д., до тех пор, пока не будет найдена свободная позиция. Если поиск выходит за пределы таблицы, то он возобновляется с ее начала.

8. Макроязык и макропроцессор.Функции макропроцессора.

Макрокомандой называется однострочное сокращение для групп команд. Используя макрокоманду, программист по существу определяет одну команду для представления последовательности команд. Вместо каждого вхождения этой однострочной макрокоманды макропроцессор подставит в программу всю последовательность команд.

Процесс замены макрокоманд соответствующими последовательностями команд ассемблера, осуществляемый макропроцессором, называется макрорасширением или макрогенерацией. За исключением некоторых специальных случаев, макропроцессор не анализирует смысл обрабатываемого им текста. Механизм работы макропроцессора практически не связан с архитектурой аппаратных средств, на которой он должен работать.

Имя последовательности команд присваивается с помощью определения макрокоманды, имеющего формат:

имя macro [параметры]

последовательность

команд

ассемблера

endm

Пример:

  1. Было :

add ax, 258

mov bx, ax

xor ax, ax

add ax, 360

mov bx, ax

xor ax, ax

add ax, 100

mov bx, ax

xor ax, ax

2)создали макро

М_1 macro х

add ax, x

mov bx, ax

xor ax, ax

endm

3)стало

М_1 258

М_1 360

М_1 100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]