SlideShare a Scribd company logo
1 of 11
Алгоритмы сортировки.
Постановка задачи сортировки. Удобство использования отсортированных
данных. Множественность алгоритмов сортировки и проблема выбора метода.
Классификации методов сортировки: внешние и внутренние, устойчивые и
неустойчивые, естественные и неестественные. Характерные примеры и
применения.
Сортировка вставкой.
Пример: структура карточной игры. Псевдокод для сортировки массива методом
вставки. Поиск места для вставки: трудоголический метод и просеивание.
Корректность и завершимость алгоритма. Барьерный вариант метода: экономия
на сравнении. Аналогия с терминатором списка.
Анализ метода. Минимальное, среднее и максимальное число сравнений и
перестановок. Наихудшая и наилучшая производительность. Устойчивость
метода. Учѐт сравнений и перестановок при разных реализациях ключа и
данного. Примеры pro и contra. Идея двоичной вставки и еѐ оценка.
Особенности метода вставки при внешней сортировке. Использование
вспомогательных файлов. Сложностные оценки. Пример кода для
последовательных файлов.
Сортировка выборкой.
Идея метода: выборка и удаление минимального элемента из сортируемой
последовательности с постепенным формированием результата.
Противопоставление методу вставки. Псевдокод для сортировки массива
методом выборки. Приѐм с обменом вместо удаления элемента.
Доказательство корректности и завершимости метода: индукция по числу
отсортированных элементов. Анализ метода. Минимальное, среднее и
максимальное число сравнений и перестановок. Наихудшая и наилучшая
производительность. Устойчивость метода. Сравнение результатов с методом
вставки. Причина низкой производительности метода.
Особенности метода выборки при внешней сортировке. Использование
вспомогательных файлов. Сложностные оценки. Пример кода для
последовательных файлов.
Обменные сортировки.
Идея метода: прямое упорядочивание путѐм проверки и обмена соседних
элементов. Вертикальная пузырьковая парадигма. Идеи досрочного окончания
проходов: исключение из рассмотрения легчайших элементов, прекращение
обменов по счѐтчику обменов и по индексу последнего обмена. Ассимметрия
пузырьковой сортировки. Шейкерное улучшение.
Псевдокод для пузырьковой сортировки массива и улучшенных вариантов.
Анализ метода. Минимальное, среднее и максимальное число сравнений и
перестановок. Наихудшая и наилучшая производительность. Устойчивость
метода.
Сравнение результатов с методами вставки и выборки. Особенности обменных
методов при внешней сортировке. Использование вспомогательного файла.
Сложностные оценки. Пример кода для последовательных файлов.
Единичные перемещения элементов -- главная причина низкой
производительности простых методов сортировки.
«Применяются: НИКОГДА!?»
Сортировка Шелла.
Идея метода: естественное ускорение метода вставки путѐм сортировки
подпоследовательностей регулярного уменьшающегося шага с перемещениями
на расстояния >> 1 в памяти прямого доступа. Барьерный вариант с
множеством терминирующих элементов.
Псевдокод для сортировки массива методом Шелла.
Анализ метода. Оценки для некоторых наборов шагов. Наихудшая и наилучшая
производительность. Отсутствие оптимального решения.
Неустойчивость метода. Резонансные случаи: трешинг в системах с
виртуальной памятью.
Особенности внешней сортировки методом Шелла.
Сравнение результатов с простыми методами сортировки.
Пирамидальная сортировка Флойда.
Идея метода: усовершенствование метода выборки путѐм построения
турнирного дерева (дерева выбора) с сохранением иерархии элементов
сортируемого множества. Линеарифмическая сложностная оценка. Причина
удвоенного расхода памяти: простая избыточная схема хранения дерева
выбора.
Минимальная по памяти турнирная сортировка.
Идея Флойда: пирамидализация на месте. Упорядочение с помощью
иерархической системы пирамид. Вставка элемента в пирамиду по уровню
компетентности (просеивание).
Псевдокод для пирамидальной сортировки массива.
Анализ метода. Наихудшая и наилучшая производительность. Хорошее
поведение пирамидального алгоритма при дельтафункциональных данных.
Сравнение с методом Шелла.
Идея Э. Дейкстры о линеаризации пирамидальной сортировки почти
отсортированного массива (гладкая сортировка).
Быстрая сортировка Хоора.
Идея метода: улучшение наихудшего из простых метода обменной сортировки
путѐм разделений и обменов в памяти прямого доступа. Основополагающий
пример с обратно отсортированным массивом.
Псевдокод для быстрой рекурсивной сортировки массива.
Анализ метода. Линеарифмическая сложностная оценка. Наихудшая и
наилучшая производительность. Выбор зернового элемента. Медиана
множества как оптимальное решение. Быстрый выбор зернового элемента из
трѐх случайно взятых. Дихотомический метод быстрого поиска медианы.
Распараллеливание быстрой сортировки на [log2(n)] + 1 процессоров.
Итеративная версия: моделирование рекурсии с помощью стека, хранение в
стеке граничных пар сортируемых подпоследовательностей. Минимизация
размера стека путѐм запоминания границ больших участков.
Сравнение с методом Флойда.
STL-подход к выбору метода сортировки.
Сравнение методов внутренней сортировки.
Формулы для простых методов.
Оценки производительных методов.
Влияние архитектурных факторов, формы и местонахождения ключей.
Хронометраж различных методов сортировки на представительном наборе
данных.
Критика двоичной вставки.
Критика шейкерного метода.
Сравнение улучшенных методов.
Внешние сортировки.
Особенности внешних сортировок. Невозможность прямого доступа к линейно
(вращательно) движущемуся электромеханическому носителю. Аналогия с
данными, поступающими по каналам связи.
Основополагающий пример со слиянием упорядоченных файлов за линейное
время. Идея метода простого слияния. Фазы, проходы (этапы) слияния.
Трѐхленточность и двухфазность простого слияния. Интеграция слияния и
разделения. Четырѐхленточный однофазный вариант простого слияния.
Анализ метода. Линеарифмическая сложностная оценка. Наихудшая и
наилучшая производительность. Пренебрежение сравнениями во внешних
сортировках. Пространственная сложность сортировки слиянием.
Интерпретация оценки по внешней памяти.
Устойчивость метода. Роль сортировки слиянием в STL.
Естественное слияние. Позитивная реактивность на упорядоченные участки
сортируемых данных. Улучшение средней оценки по сравнению с
трудоголичным простым слиянием.
Многопоточные слияния. Улучшение линеарифмической оценки многопоточного
естественного слияния за счѐт логарифмирования по числу магнитофонов.
Лабораторная работа №2 «Сортировка структур данных».
Реализовать заданный абстрактный тип данных на языке Си.
Готовые реализации использовать только для сравнения и тестирования.
Составить программу сортировки экземпляра типа заданным методом,
используя только абстрактные операции и отношения.
Дать сложностные оценки использованным методам с подтверждением в
процессе тестирования крайних и средних значений.
Для сборки программы, генерации тестов и собственно тестирования
использовать средства ОС UNIX.
Варианты заданий задаются прежними номерами в матрице на пересечении
строк -- методов сортировки и столбцов -- сортируемых структур.
Типовое решение: сортировка стека на массиве (код на Си, make-файл и
тесты).
АиСД осень 2012 лекция 9

More Related Content

Viewers also liked

АиСД осень 2012 лекция 6
АиСД осень 2012 лекция 6АиСД осень 2012 лекция 6
АиСД осень 2012 лекция 6Technopark
 
Highload осень 2012 лекция 4
Highload осень 2012 лекция 4Highload осень 2012 лекция 4
Highload осень 2012 лекция 4Technopark
 
Highload осень 2012 лекция 1
Highload осень 2012 лекция 1Highload осень 2012 лекция 1
Highload осень 2012 лекция 1Technopark
 
Бизнес и системный анализ весна 2013 лекция 4
Бизнес и системный анализ весна 2013 лекция 4Бизнес и системный анализ весна 2013 лекция 4
Бизнес и системный анализ весна 2013 лекция 4Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 

Viewers also liked (17)

АиСД осень 2012 лекция 6
АиСД осень 2012 лекция 6АиСД осень 2012 лекция 6
АиСД осень 2012 лекция 6
 
Highload осень 2012 лекция 4
Highload осень 2012 лекция 4Highload осень 2012 лекция 4
Highload осень 2012 лекция 4
 
Highload осень 2012 лекция 1
Highload осень 2012 лекция 1Highload осень 2012 лекция 1
Highload осень 2012 лекция 1
 
Бизнес и системный анализ весна 2013 лекция 4
Бизнес и системный анализ весна 2013 лекция 4Бизнес и системный анализ весна 2013 лекция 4
Бизнес и системный анализ весна 2013 лекция 4
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 

Similar to АиСД осень 2012 лекция 9

АиСД осень 2012 лекция 12
АиСД осень 2012 лекция 12АиСД осень 2012 лекция 12
АиСД осень 2012 лекция 12Technopark
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировкиUnguryan Vitaliy
 
Управление Данными. Лекция 6
Управление Данными. Лекция 6Управление Данными. Лекция 6
Управление Данными. Лекция 6Dmitriy Krukov
 
интелектуальный анализ экономических данных в системе каркас
интелектуальный анализ экономических данных в системе каркасинтелектуальный анализ экономических данных в системе каркас
интелектуальный анализ экономических данных в системе каркасVladimir Burdaev
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучениеGrigory Sapunov
 
машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данныхYandex
 
Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответамиСергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответамиYandex
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБДRoman Brovko
 
03 кластеризация документов
03 кластеризация документов03 кластеризация документов
03 кластеризация документовLidia Pivovarova
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16guest1ba51d
 
Перечитывая Лео Бреймана
Перечитывая Лео БрейманаПеречитывая Лео Бреймана
Перечитывая Лео БрейманаSerge Terekhov
 

Similar to АиСД осень 2012 лекция 9 (13)

АиСД осень 2012 лекция 12
АиСД осень 2012 лекция 12АиСД осень 2012 лекция 12
АиСД осень 2012 лекция 12
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
 
Управление Данными. Лекция 6
Управление Данными. Лекция 6Управление Данными. Лекция 6
Управление Данными. Лекция 6
 
интелектуальный анализ экономических данных в системе каркас
интелектуальный анализ экономических данных в системе каркасинтелектуальный анализ экономических данных в системе каркас
интелектуальный анализ экономических данных в системе каркас
 
поиск данных
поиск данныхпоиск данных
поиск данных
 
лекция 35
лекция 35лекция 35
лекция 35
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучение
 
машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данных
 
Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответамиСергей Терехов — Активное обучение при малой доле примеров с известными ответами
Сергей Терехов — Активное обучение при малой доле примеров с известными ответами
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД
 
03 кластеризация документов
03 кластеризация документов03 кластеризация документов
03 кластеризация документов
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16
 
Перечитывая Лео Бреймана
Перечитывая Лео БрейманаПеречитывая Лео Бреймана
Перечитывая Лео Бреймана
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7Technopark
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 

More from Technopark (17)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 

АиСД осень 2012 лекция 9

  • 1.
  • 2. Алгоритмы сортировки. Постановка задачи сортировки. Удобство использования отсортированных данных. Множественность алгоритмов сортировки и проблема выбора метода. Классификации методов сортировки: внешние и внутренние, устойчивые и неустойчивые, естественные и неестественные. Характерные примеры и применения. Сортировка вставкой. Пример: структура карточной игры. Псевдокод для сортировки массива методом вставки. Поиск места для вставки: трудоголический метод и просеивание. Корректность и завершимость алгоритма. Барьерный вариант метода: экономия на сравнении. Аналогия с терминатором списка. Анализ метода. Минимальное, среднее и максимальное число сравнений и перестановок. Наихудшая и наилучшая производительность. Устойчивость метода. Учѐт сравнений и перестановок при разных реализациях ключа и данного. Примеры pro и contra. Идея двоичной вставки и еѐ оценка. Особенности метода вставки при внешней сортировке. Использование вспомогательных файлов. Сложностные оценки. Пример кода для последовательных файлов.
  • 3. Сортировка выборкой. Идея метода: выборка и удаление минимального элемента из сортируемой последовательности с постепенным формированием результата. Противопоставление методу вставки. Псевдокод для сортировки массива методом выборки. Приѐм с обменом вместо удаления элемента. Доказательство корректности и завершимости метода: индукция по числу отсортированных элементов. Анализ метода. Минимальное, среднее и максимальное число сравнений и перестановок. Наихудшая и наилучшая производительность. Устойчивость метода. Сравнение результатов с методом вставки. Причина низкой производительности метода. Особенности метода выборки при внешней сортировке. Использование вспомогательных файлов. Сложностные оценки. Пример кода для последовательных файлов.
  • 4. Обменные сортировки. Идея метода: прямое упорядочивание путѐм проверки и обмена соседних элементов. Вертикальная пузырьковая парадигма. Идеи досрочного окончания проходов: исключение из рассмотрения легчайших элементов, прекращение обменов по счѐтчику обменов и по индексу последнего обмена. Ассимметрия пузырьковой сортировки. Шейкерное улучшение. Псевдокод для пузырьковой сортировки массива и улучшенных вариантов. Анализ метода. Минимальное, среднее и максимальное число сравнений и перестановок. Наихудшая и наилучшая производительность. Устойчивость метода. Сравнение результатов с методами вставки и выборки. Особенности обменных методов при внешней сортировке. Использование вспомогательного файла. Сложностные оценки. Пример кода для последовательных файлов. Единичные перемещения элементов -- главная причина низкой производительности простых методов сортировки. «Применяются: НИКОГДА!?»
  • 5. Сортировка Шелла. Идея метода: естественное ускорение метода вставки путѐм сортировки подпоследовательностей регулярного уменьшающегося шага с перемещениями на расстояния >> 1 в памяти прямого доступа. Барьерный вариант с множеством терминирующих элементов. Псевдокод для сортировки массива методом Шелла. Анализ метода. Оценки для некоторых наборов шагов. Наихудшая и наилучшая производительность. Отсутствие оптимального решения. Неустойчивость метода. Резонансные случаи: трешинг в системах с виртуальной памятью. Особенности внешней сортировки методом Шелла. Сравнение результатов с простыми методами сортировки.
  • 6. Пирамидальная сортировка Флойда. Идея метода: усовершенствование метода выборки путѐм построения турнирного дерева (дерева выбора) с сохранением иерархии элементов сортируемого множества. Линеарифмическая сложностная оценка. Причина удвоенного расхода памяти: простая избыточная схема хранения дерева выбора. Минимальная по памяти турнирная сортировка. Идея Флойда: пирамидализация на месте. Упорядочение с помощью иерархической системы пирамид. Вставка элемента в пирамиду по уровню компетентности (просеивание). Псевдокод для пирамидальной сортировки массива. Анализ метода. Наихудшая и наилучшая производительность. Хорошее поведение пирамидального алгоритма при дельтафункциональных данных. Сравнение с методом Шелла. Идея Э. Дейкстры о линеаризации пирамидальной сортировки почти отсортированного массива (гладкая сортировка).
  • 7. Быстрая сортировка Хоора. Идея метода: улучшение наихудшего из простых метода обменной сортировки путѐм разделений и обменов в памяти прямого доступа. Основополагающий пример с обратно отсортированным массивом. Псевдокод для быстрой рекурсивной сортировки массива. Анализ метода. Линеарифмическая сложностная оценка. Наихудшая и наилучшая производительность. Выбор зернового элемента. Медиана множества как оптимальное решение. Быстрый выбор зернового элемента из трѐх случайно взятых. Дихотомический метод быстрого поиска медианы. Распараллеливание быстрой сортировки на [log2(n)] + 1 процессоров. Итеративная версия: моделирование рекурсии с помощью стека, хранение в стеке граничных пар сортируемых подпоследовательностей. Минимизация размера стека путѐм запоминания границ больших участков. Сравнение с методом Флойда. STL-подход к выбору метода сортировки.
  • 8. Сравнение методов внутренней сортировки. Формулы для простых методов. Оценки производительных методов. Влияние архитектурных факторов, формы и местонахождения ключей. Хронометраж различных методов сортировки на представительном наборе данных. Критика двоичной вставки. Критика шейкерного метода. Сравнение улучшенных методов.
  • 9. Внешние сортировки. Особенности внешних сортировок. Невозможность прямого доступа к линейно (вращательно) движущемуся электромеханическому носителю. Аналогия с данными, поступающими по каналам связи. Основополагающий пример со слиянием упорядоченных файлов за линейное время. Идея метода простого слияния. Фазы, проходы (этапы) слияния. Трѐхленточность и двухфазность простого слияния. Интеграция слияния и разделения. Четырѐхленточный однофазный вариант простого слияния. Анализ метода. Линеарифмическая сложностная оценка. Наихудшая и наилучшая производительность. Пренебрежение сравнениями во внешних сортировках. Пространственная сложность сортировки слиянием. Интерпретация оценки по внешней памяти. Устойчивость метода. Роль сортировки слиянием в STL. Естественное слияние. Позитивная реактивность на упорядоченные участки сортируемых данных. Улучшение средней оценки по сравнению с трудоголичным простым слиянием. Многопоточные слияния. Улучшение линеарифмической оценки многопоточного естественного слияния за счѐт логарифмирования по числу магнитофонов.
  • 10. Лабораторная работа №2 «Сортировка структур данных». Реализовать заданный абстрактный тип данных на языке Си. Готовые реализации использовать только для сравнения и тестирования. Составить программу сортировки экземпляра типа заданным методом, используя только абстрактные операции и отношения. Дать сложностные оценки использованным методам с подтверждением в процессе тестирования крайних и средних значений. Для сборки программы, генерации тестов и собственно тестирования использовать средства ОС UNIX. Варианты заданий задаются прежними номерами в матрице на пересечении строк -- методов сортировки и столбцов -- сортируемых структур. Типовое решение: сортировка стека на массиве (код на Си, make-файл и тесты).