- •Нахождение простых чисел. Алгоритм Эратосфена.
- •Алгоритм Эвклида.
- •Списки.
- •Очередь
- •Рекурсия
- •Деревья
- •Квадратичные сортировки
- •Быстрая сортировка
- •Сортировка слиянием.
- •Сортировка радикс обменом.
- •Поиск элемента в массиве.
- •Алгоритм Рабина-Карпа
- •Алгоритм Бойера-Мура
- •Алгоритм поиска подстроки Кнута-Морриса-Прата
- •Создание и использование модулей.
- •Жизненный цикл программного средства.
- •Специфика разработки программных средств.
- •Сложность программных средств.
- •Источники ошибок в программных средствах.
- •Понятие качества программного средства.
Сортировка слиянием.
Алгоритм сортировки — это алгоритм для упорядочения элементов в списке. В случае, когда элемент списка имеет несколько полей, поле, служащее критерием порядка, называется ключом сортировки. По невозрастанию/неубыванию. Сорт раздел по количеству действий и по принципу сортировка.
Рекурсивная.
N*log2(N) к-во действий
ЗЕРКАЛЬНО!
1 часть прямой порядок, 2 - обратный.
// 7 11 / 2 3 // 5 1 / 74 25 //
// 7 11 / 3 2 // 5 1 / 25 74 //
// 2 3 7 11 // 74 25 5 1 //
Сортировка радикс обменом.
Алгоритм сортировки — это алгоритм для упорядочения элементов в списке. В случае, когда элемент списка имеет несколько полей, поле, служащее критерием порядка, называется ключом сортировки. По невозрастанию/неубыванию. Сорт раздел по количеству действий и по принципу сортировка.
Рекурсивная.
N*log2(N) к-во действий
Радикс сортирующие алгоритмы работают с ключами как с числами некоторого основания М, используя их отдельные цифры.
Все что хранится в памяти компьютера можно представить как бинарное число, поэтому многие приложения могут быть изменены так, чтобы использовались как бинарные числа.
Цифры всегда идут по порядку: 0 всегда предшествует 1, и т.д. Такой метод называется сортировка радикс обменом.
Пусть у нас есть способ упорядочить файл по i-му биту так, что сперва идут все ключи в которых этот бит равен 0, а потом все в которых он 1. Это немедленно порождает рекурсивный сортировочный механизм: отсортировать сперва по старшему биту, потом образовавшиеся два подфайла отсортировать независимо друг от друга по следующему биту и т.д.
Сортировка файла по определенному биту очень схожа с процедурой деления в алгоритме быстрой сортировки: найдем 1 слева, 0 справа, обменяем, и повторяем до тех пор, пока указатели сканирования не пересекутся. Это приводит к процедуре сортировки, очень схожей с быстрой сортировкой:
Количество действий к-во бит * к-во значений
Поиск элемента в массиве.
Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).
Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.
Поиск элемента в массиве.
1) Для любого случая. Спобоб простого перебора.
2) Способ полного перебора. Поиск в упорядоченном массиве.
3) Поиск по индексу. Если значение элемента совпадают с индексом.
метод двоичного поиска.
Алгоритм Рабина-Карпа
Идея, предложенная Рабином и Карпом, подразумевает поставить в соответствие каждой строке некоторое уникальное число, и вместо того чтобы сравнивать сами строки, сравнивать числа, что намного быстрее. Проблема в том, что искомая строка может быть длинной, строк в тексте тоже хватает.
В искомую строку рассчитываем функцию. f(x)=/f в n*x1+f в (n-1)*x2+...+f*xn/р, где р-модуль.
если f(x)=f(y1) => посимвольно
если f(x)<>f(y1) => f(y2)
Требование к функции: уникальность, простота вычисления, скорость
Алгоритм Рабина-Карпа — это алгоритм поиска строки, который ищет шаблон, то есть подстроку, в тексте используя хеширование. Он не широко используется для поиска одиночного шаблона, но имеет значительную теоретическую важность и очень эффективен в поиске совпадений множественных шаблонов.
Хэш-функция — это функция, которая преобразует каждую строку в числовое значение, называемое хэш-значение;