Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора информатика.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать

5. Анализ алгоритмов сортировки: обменная сортировка методом «пузырька», метод «простого выбора».

Алгоритмы сортировки оцениваются по скорости выполнения и эффективности использования памяти:

Время — основной параметр, характеризующий быстродействие алгоритма. Называется также вычислительной сложностью. Для упорядочения важны худшее, среднее и лучшее поведение алгоритма в терминах размера списка (n). Для типичного алгоритма хорошее поведение — это O(n log n) и плохое поведение — это O(n²). Идеальное поведение для упорядочения — O(n). Алгоритмы сортировки, использующие только абстрактную операцию сравнения ключей всегда нуждаются по меньшей мере в O(n log n) сравнениях в среднем;

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

Метод «Простой выбор». Алгоритм можно представить как повторение (n-1) раз поиска минимума, имеющего сложность O(n). Тогда сложность сортировки равна: (n-1)*(αn+β)=αn2+βn+γ , т.е. имеем O(n2).Или так рассуждаем:В данном алгоритме один цикл вложен в другой и оба цикла зависят от размера одной и той же переменной: Сложность этого алгоритма О(N2), т.е. вся конструкция характеризуется квадратичной сложностью.

Метод «обмена или пузырька». Идея: попарно сравниваются соседние элементы, и если их взаиморасположение не соответствует заданному условию упорядоченности, то сравниваемые элементы меняются местами. В результате одного прохода происходит частичное упорядочение массива, при этом наибольший элемент оказывается на последнем месте (всплывает) и в дальнейшем его не рассматривают. Аналогично,В данном алгоритме один цикл вложен в другой и оба цикла зависят от размера одной и той же переменной: Сложность этого алгоритма О(N2), т.е. вся конструкция характеризуется квадратичной

сложностью.

17. Анализ алг-мов поиска: послед-ый поиск в неупорядоч .Массиве, бинарный поиск в упорядоч. Массиве.

Люб.задача имеет неск-ко алг-мов реш-я. Каждый алг-м нужно проанализ-ть- ск-ко вычислит.ресурсов она требует (время раб, память) и выбрать эф-ый. В качестве критерия оценки алг-ма будем исп-ть такую харак-ку, как «сложность».

Временная сложность алг-ма – это время Т, необх-ое для его вып-ия в зав-ти от исх.д-ых. Оно равно произв-ю числа элем-ых действий k на среднее время вып-ия 1го действия t: T=kt.

Будем говорить, что Т(п) алг-ма имеет порядок роста f(n), или алг-м имеет теоретич. слож-ть O(f(n)) («о большое от f(n)»), если для Т(п) найдется такая константа с, что, начиная с не­к-го п0, вып-ся усл-е Т(п) <= cf(n). Здесь предполагается, что функция f(n) неотриц-а, по кр.мере при п>п0. (Здесь n-кол-во д-ых, f-ф-ция от n, T(n)-время вып-ия алг-ма в худшем случае)

Сформ-ем алг-м послед-го поиска в не­уп. послед-ти (массиве).

B алг-мах поиска сущ-ет две возм-ти окончания работы: либо поиск оказался удачным, т. е. позволил опред-ть полож-е соот-го эл-та, либо он оказался неудачным, т. е. показал, что необх-го эл-та в дан.объеме инф-ции нет. Пример. Имеется массив а[1..п], треб-ся найти эл-т масси­ва, равный Р.

1)Установить i=1. 2)Если at =Р, алг-м окончен удачно. 3)Увел-ть t на 1. 4)Если i<n, то перейти к ш2. В прот. случае ал­г-м окончен неудачно.

Слож-ть алг-ов поиска оценивают по числу сравнений эл-тов массива с искомым эл-том. В худшем случае (искомый эл-т Р сто­ит на последнем месте или отсут-ет) слож-ть ал­г-ма будет = п.(линейная слож-ть)

Усложним задачу. Пусть треб-ся найти в неуп. массиве max и min эл-ты одновр-о.

1) min = a1 max = а1. 2) Установить i = 1. 3) Если i < n, то перейти к шагу 4, иначе алг-м окончен (min=mах). 4) Увеличить i на 1. 5) Если ai < min, то min:= знач-е аi 6) Если аi > max, то max := знач-е аi. 7) Перейти к 3.

Слож-ть этого алг-ма = 2(n - 1). M. написать алг-м, слож-ть к-го будет =3*(n/2).

Эф-ый алг-м поиска в неуп. массиве max и min эл-ты одновр-о.

1. Разбить массив на пары (получим - n/2 пар, при нечет. n - плюс еще один Эл-т).

2. Упорядочить по возр-ю кажд. пару (при вып-ии этого шага будет вып-о - n/2 сравнений). Тогда в массиве на всех нечет-х местах будет стоять min для данной пары число, а на всех чет. местах - max.

3. Найти min число, осуществляя поиск только среди эл-тов, стоящих на нечет.местах. При этом, если у нас есть неполная пара, то в качестве нач-го знач-я переменной min взять знач-е эл-та неполной пары (при вып-и этого шага будет выполнено n/2 сравнении).

4. Найдем max число, осуществляя поиск только среди эл-тов, стоящих на чет.местах. При этом если у нас есть неполная пара, то в качестве нач-го знач-я переменной max взять знач-е эл-та неполной пары (при вып-и этого шага будет вып-о n/2сравнений).

Всего сравнений в данном алг-ме 3*(n/2).

Пусть треб-ся найти эл-т в большом упор-ом массиве инф-ции, к-ая расположена в операт.памяти комп-а. Для реш-я этой задачи разработан алг-м бинарного (двоичного) поиска.

Одна из наиб. популярных реализаций этого алг-ма исп-ет два указателя (l и u), соот-щие нижней и верхней границам поиска. С пом. этого алг-ма ищется эл-т k в упор-ом по возр-ю массиве а, содержащем n эл-тов.

1. Нач-ая установка: l = 1, и = п.

2. Если и < l, то алг-м окончен неудачно. В прот.случае найти середину интервала [l; и]. В этот момент мы знаем, что если k есть в массиве, то вып-ся не­рав-ва al<=k<= аи. Установить i = [(l + u)/2]. Теперь i указ-ет примерно в середину рассм-мой части массива.

3. Если k < ai, то перейти к ш.4, если k > ai то перейти к ш.5, если k = ai алг-м окончен удачно.

4. Установить и = i1 и перейти к ш2.

5. Установить l = i + 1 и перейти к ш2.

Шаг 3 алг-ма бинарного поиска вып-ся по­рядка log2n раз, т.е. данный алг-м имеет логариф-ую слож-ть по числу сравнений.