КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пузырьковая сортировка
Оценка времени исполнения алгоритмов. Символ O() Характеристики сортировок Методы упорядочивания данных со статическими связями. Алгоритмы сортировок
1. Время сортировки. 2. Дополнительная память, необходимая для сортировки.
Для оценки производительности алгоритма можно использовать различные подходы. Самый простой из них - это запустить алгоритм и сравнить время его выполнения на разных задачах. Более научный подход заключается в оценке с использованием символа О(). Этот символ зависит от числа n, где n - это число обработанных чисел. Такую оценку называют асимптотикой, так как она обозначает асимптотическое поведение алгоритма при n→∞. Когда используют данную оценку, имеют в виду не точное время исполнения, а только его предел сверху с точностью до постоянного множителя. Например, когда алгоритму требуется времени О(n^2), имеется в виду, что время исполнения задачи растет не быстрее, чем квадрат количества элементов. Таблица 1 иллюстрирует скорость роста для различных функций О:
Таблица 1. Скорость роста для различных функций O
Если считать, что числа в таблице соответствуют микросекундам, то для сортировки 1 миллиона элементов алгоритму, обладающему эффективностью O(log(n)) потребуется 20 микросекунд, а алгоритму с эффективностью O(n^2), - более 12 дней. Если оба алгоритма имеют оценки эффективности O(n*log(n)), это не значит, что они одинаково эффективны, так как оценка O не учитывает константу, то есть первый алгоритм может быть эффективнее в 1000 раз, чем второй. За функцию берется количество операций, возрастающее быстрее всего. То есть если в программе одна функция выполняется O(n) раз - например, умножение, а сложение - O(n^2) раз, то общая сложность - O(n^2), так как n^2 возрастает быстрее. Практический смысл этого такой: при увеличении n более быстрые (в определенное, константное число раз) сложения станут выполняться настолько часто, что будут влиять на производительность много сильнее, нежели медленные, но редкие умножения Кроме символа O() используются также оценки Omega() - нижняя оценка, Theta() - комбинация O() и Omega(): точная оценка асимптотики.
Интуитивный смысл оценок:
1. Общее быстродействие O(n^2), поэтому на практике практически не используется. 2. Дополнительные затраты на память. Сортировка происходит на месте. 3. Устойчивая. 4. Поведение неестественное. Идея метода: Идея метода: шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами. После нулевого прохода по массиву "вверху" оказывается самый "легкий" элемент - отсюда аналогия с пузырьком. Следующий проход делается до второго сверху элемента, таким образом, второй по величине элемент поднимается на правильную позицию. Делаем проходы по все уменьшающейся нижней части массива до тех пор, пока в ней не останется только один элемент.
Дата добавления: 2014-01-11; Просмотров: 521; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |