
- •Алгоритм линейного поиска в одномерном массиве. Зависимость затрат на линейный поиск в среднем и в худшем случае от числа элементов массива. Улучшение линейного поиска: поиск с барьером.
- •Алгоритм двоичного поиска в одномерном отсортированном массиве. Зависимость затрат на двоичный поиск в среднем и в худшем случае от числа элементов массива.
- •3. Последовательная и связанная память. Представление линейных списков в последовательной и связанной памяти. Достоинства и недостатки того и другого представления.
- •Стеки и очереди в непрерывной памяти
- •Представление стека в связаннной памяти
- •Представление очереди в непрерывной памяти
- •Представление очереди в связаннной памяти
- •5. Понятие обхода дерева. Виды обходов двоичного дерева. Определение структуры двоичного дерева по двум заданным обходам. Рекурсивные алгоритмы обходов двоичных деревьев.
- •Примеры обходов должны различаться в ответах разных студентов
- •7. Деревья поиска. Алгоритм исключения узла из дерева поиска.
- •8 Понятие программного обеспечения, тенденции развития программного обеспечения.
- •It-услуги
- •9.1 Функциональная и объектно-ориентированные стратегии разработки по
- •Функционально-ориентированная стратегия разработки по (фос)
- •Объектно-ориентированная стратегия разработки по (оос)
- •10 - Основные принципы ооп
- •11.1 - Принципы отладки программных систем.
- •12.1 - Обобщенные и элементарные критерии качества программного обеспечения.
- •12.2 - Обобщенные и элементарные критерии качества программного обеспечения.
- •13.1- Организация коллективов программистов и разработчиков
- •13.2- Организация коллективов программистов и разработчиков
- •14. Тестирование программного обеспечения. Автономное и комплексное тестирование см. Также распечатку гэ_г_тестирование, структуру ответа - лучше по ней
- •14.2 - Тестирование программного обеспечения. Автономное и комплексное тестирование
- •Автономное и комплексное тестирование
- •14.3 - Тестирование программного обеспечения. Автономное и комплексное тестирование алгоритм тестирования подпрограммы / метода (модулей)
- •15.1 - Понятие класса и объекта. Конструкторы и деструкторы.
- •15.2 - Понятие класса и объекта. Конструкторы и деструкторы.
- •16 - Статические и виртуальные методы
Алгоритм линейного поиска в одномерном массиве. Зависимость затрат на линейный поиск в среднем и в худшем случае от числа элементов массива. Улучшение линейного поиска: поиск с барьером.
Массив - ограниченная упорядоченная совокупность однотипных данных, которая характеризуется именем, размером (количеством элементов) и размерностью.
Если за каждым элементом массива закреплен только один его порядковый номер, такой массив называется линейным (одномерным).
Поиск - просмотр множества элементов массива с целью …???
Пусть множество из N элементов задано в виде массива: A: ARRAY[0..N-1] of item
… |
… |
… |
0 |
.. |
N-1 |
Цель алгоритма линейного поиска в одномерном массиве - обнаружение заданного значения.
Если нет никакой дополнительной информации о разыскиваемых данных, то самый очевидный подход - последовательный просмотр массива с пошаговым увеличением той его части, где элемента не обнаружено. Такой метод называется линейным поиском.
Условия окончания поиска:
Элемент найден.
Просмотрен весь массив и совпадений не обнаружено.
Фрагмент кода поиска элемента x в массиве из N элементов:
i:=0;
WHILE (I<N) AND (a[I]<>x) DO
INC(I);
По алгоритму: если элемент найден, то он найден с минимально возможным индексом. Если не найден, цикл завершится, когда i достигнет значения N.
В худшем случае (искомый элемент – последний /не найден) - просмотрено N ключей. Если элементы поступают на вход с равной вероятностью, среднее число просмотренных ключей = (N+1)/2 (при больших N учитываем порядок ~ N/2).
Для выполнения программы требуется (см. сноски в коде )
при удачном варианте - 3i единиц времени (i - число просмотренных ключей)
при неудачном поиске - 3N+2 единиц / 3N+3 при вычислении по полной схеме).
Улучшение линейного поиска: поиск с барьером
В конец массива помещается дополнительный элемент с искомым значением x (барьер), что гарантирует нахождение результата.
-
...
...
...
X
0
..
N-1
N
Теперь массив задается как
a:ARRAY[0..N] of item
Фрагмент кода поиска элемента x в массиве:
…
a[N]:=x; { искомое значение }
i:= 0;
WHILE (a[I]<>x) DO
INC(I);
Поиск всегда удачен, для выполнения программы потребуется 2i+1 единиц времени.
Алгоритм двоичного поиска в одномерном отсортированном массиве. Зависимость затрат на двоичный поиск в среднем и в худшем случае от числа элементов массива.
Массив - ограниченная упорядоченная совокупность однотипных данных, которая характеризуется именем, размером (количеством элементов) и размерностью.
Если за каждым элементом массива закреплен только один его порядковый номер, такой массив называется линейным (одномерным).
Поиск - просмотр множества элементов массива с целью …???
Наша задача– минимизация количества просмотров.
A : Array [0..N-1] of item
item – любой тип
Отсортированный массив – упорядоченный по возрастанию или убыванию элементов.
Двоичный (бинарный) поиск (или метод деления пополам) — алгоритм нахождения заданного значения в отсортированном массиве.
Например, дан массив: 1 2 3 4 5 9 11. Ищем 8.
Для этого делим массив на 2 части: 5 – середина массива, меньше 8, поэтому ищем в правой части и там производим те же действия.
Таким образом, задаются границы массива: левая и правая.
Можно более подробно расписать пример
var
A: array [0..N-1] of integer;
L,R,m: integer;
Found: boolean;
Begin
L:= 0;
R:=N-1;
Found:=false;
While (L<R) and (not Found) do
Begin
m:=(L+R) div 2;
if a[m] =x then
Found:=true
Else if a[m] < x then
L:= m+1
Else R:= m-1;
End;
ОЦЕНКА (число просмотренных элементов):
Для максимального и среднего случая – логарифмическая зависимость.
- минимальная = 1
- максимальная = log2N можно вывести формулу
- среднее = log2N-1 выводить формулу НЕ НУЖНО: займет много времени