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

More Related Content

PPTX
Практический курс «Основы Data Mining для всех»
ODP
Классификация поисковых запросов
PDF
Савостин. Системы и методы научного поиска и мониторинга
PPTX
Об использовании средств обнаружения заимствований в работе научных журналов
PDF
Комбинирование факторов для разрешения референции местоимений
PDF
Methodology and software for extracting and transforming data from arbitrary ...
PPT
лезин
PPT
Web осень 2012 лекция 8
Практический курс «Основы Data Mining для всех»
Классификация поисковых запросов
Савостин. Системы и методы научного поиска и мониторинга
Об использовании средств обнаружения заимствований в работе научных журналов
Комбинирование факторов для разрешения референции местоимений
Methodology and software for extracting and transforming data from arbitrary ...
лезин
Web осень 2012 лекция 8

Viewers also liked (17)

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

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

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

More from Technopark (17)

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

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

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