SlideShare a Scribd company logo
Язык С++ 
Квадратичные алгоритмы сортировки
Постановка задачи 
Алгоритм сортировки — это алгоритм для упорядочивания элементов в 
массиве. 
8 3 4 0 2 1 7 6 9 5 
0 1 2 3 4 5 6 7 8 9
Алгоритмы сортировки 
Квадратичные алгоритмы: 
• Сортировка пузырьком 
• Сортировка выбором 
• Сортировка вставками 
Сложность этих алгоритмов (количество сравнений, 
производимый во время работы программы, при самом 
неудачном входном массиве) имеет порядок 
2 n 
Поэтому они называются квадратичными
Сортировка пузырьком 
for(int i = 0; i < n; i++) 
for(int j = 0; j < n; j++) 
if(a[j] > a[j + 1]) swap(a[j], a[j + 1]);
Сортировка пузырьком 
for(int i = 0; i < n; i++) 
for(int j = 0; j < n; j++) 
if(a[j] > a[j + 1]) swap(a[j], a[j + 1]);
Сортировка пузырьком 
Наилучший случай: изначальный массив уже отсортирован. 
Алгоритм совершает всего один проход по массиву. 
0 1 2 3 4 5 6 7 8 9 
Наихудший случай: изначальный массив отсортирован в 
n(n 1) 
обратном порядке. Алгоритм совершает сравнений. 
2 
9 8 7 6 5 4 3 2 1 0
Сортировка выбором 
for (int i = 0; i < n - 1; i++) 
{ 
count = A[i]; key=i; 
for (int j = i + 1; j < n; j++) 
if (A[j] < A[key]) 
key = j; 
if (key != i) 
{ 
A[i] = A[key]; 
A[key] = count; 
} 
}
Сортировка выбором 
n(n 1) 
Этот алгоритм совершает сравнений на любом 
2 
входном массиве. Но, в отличие от алгоритма сортировки 
пузырьком, производит всего n - 1 операций обмена.
Сортировка вставками 
for(int i = 1; i < n; i++) 
for(int j = i; j > 0 && A[j-1] > A[j]; j--) 
swap(A[j-1], A[j]);
Сортировка вставками 
Как и сортировка выбором, этот алгоритм совершает 
сравнений. 
n(n 1) 
2 
Алгоритм сортировки вставками может быть значительно 
ускорен при работе с большими массивами, если вместо 
обычного линейного поиска использовать бинарный
Бонус: сортировка пузырьком

More Related Content

What's hot

сортировка
сортировкасортировка
сортировкаaianami
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
производящие функции
производящие функциипроизводящие функции
производящие функции
Mariya_Lastochkina
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Technopark
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
Mikhail Kurnosov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
Mikhail Kurnosov
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
Mikhail Kurnosov
 
Funk tang b kotang
Funk tang  b kotangFunk tang  b kotang
Funk tang b kotang
Narvatk
 
понятие функции
понятие функциипонятие функции
понятие функцииttku
 
учебная презентация. преобразование графиков функций
учебная презентация. преобразование графиков функцийучебная презентация. преобразование графиков функций
учебная презентация. преобразование графиков функций
msycheva
 
Proizvodnaya i grafiki_funkcii
Proizvodnaya i grafiki_funkciiProizvodnaya i grafiki_funkcii
Proizvodnaya i grafiki_funkcii
Dimon4
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Pokazatelnaya funkciya
Pokazatelnaya funkciyaPokazatelnaya funkciya
Pokazatelnaya funkciya
Dimon4
 
график функции y=IxI
график функции y=IxIграфик функции y=IxI
график функции y=IxILanaNork
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
simple_people
 

What's hot (18)

сортировка
сортировкасортировка
сортировка
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
производящие функции
производящие функциипроизводящие функции
производящие функции
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы поиска
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
Funk tang b kotang
Funk tang  b kotangFunk tang  b kotang
Funk tang b kotang
 
понятие функции
понятие функциипонятие функции
понятие функции
 
учебная презентация. преобразование графиков функций
учебная презентация. преобразование графиков функцийучебная презентация. преобразование графиков функций
учебная презентация. преобразование графиков функций
 
Proizvodnaya i grafiki_funkcii
Proizvodnaya i grafiki_funkciiProizvodnaya i grafiki_funkcii
Proizvodnaya i grafiki_funkcii
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Pokazatelnaya funkciya
Pokazatelnaya funkciyaPokazatelnaya funkciya
Pokazatelnaya funkciya
 
график функции y=IxI
график функции y=IxIграфик функции y=IxI
график функции y=IxI
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
 

Viewers also liked

Сравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на PerlСравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на Perl
mayperl
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
Fedor Tsarev
 
Advance data structure & algorithm
Advance data structure & algorithmAdvance data structure & algorithm
Advance data structure & algorithm
K Hari Shankar
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Technopark
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelMikhail Kurnosov
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Nikolay Grebenshikov
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Mikhail Kurnosov
 
Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)Mikhail Kurnosov
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Mikhail Kurnosov
 
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)Mikhail Kurnosov
 

Viewers also liked (12)

сортировка в массивах
сортировка в массивахсортировка в массивах
сортировка в массивах
 
Сравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на PerlСравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на Perl
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
 
Advance data structure & algorithm
Advance data structure & algorithmAdvance data structure & algorithm
Advance data structure & algorithm
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray Chapel
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)
 
Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
 

Similar to Алгоритмы сортировки

1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptx
rdes1
 
Лекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийЛекция 1 Скорость роста функций
Лекция 1 Скорость роста функций
simple_people
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Основы SciPy
Основы SciPyОсновы SciPy
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
Yandex
 
Тема Системы счисления
Тема Системы счисленияТема Системы счисления
Тема Системы счисления
Ольга Матькина
 
Лекция 14 Матрицы
Лекция 14 МатрицыЛекция 14 Матрицы
Лекция 14 Матрицы
simple_people
 
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JSFestUA
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
Unguryan Vitaliy
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)
Mikhail Kurnosov
 
Java 8 puzzlers
Java 8 puzzlersJava 8 puzzlers
Java 8 puzzlers
Evgeny Borisov
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисленияjula-mam
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
Andrey Dolinin
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
Theoretical mechanics department
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
Основы NumPy
Основы NumPyОсновы NumPy

Similar to Алгоритмы сортировки (20)

1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptx
 
Лекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийЛекция 1 Скорость роста функций
Лекция 1 Скорость роста функций
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
 
Тема Системы счисления
Тема Системы счисленияТема Системы счисления
Тема Системы счисления
 
Лекция 14 Матрицы
Лекция 14 МатрицыЛекция 14 Матрицы
Лекция 14 Матрицы
 
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)
 
Java 8 puzzlers
Java 8 puzzlersJava 8 puzzlers
Java 8 puzzlers
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Algo 00
Algo 00Algo 00
Algo 00
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 

Алгоритмы сортировки

  • 1. Язык С++ Квадратичные алгоритмы сортировки
  • 2. Постановка задачи Алгоритм сортировки — это алгоритм для упорядочивания элементов в массиве. 8 3 4 0 2 1 7 6 9 5 0 1 2 3 4 5 6 7 8 9
  • 3. Алгоритмы сортировки Квадратичные алгоритмы: • Сортировка пузырьком • Сортировка выбором • Сортировка вставками Сложность этих алгоритмов (количество сравнений, производимый во время работы программы, при самом неудачном входном массиве) имеет порядок 2 n Поэтому они называются квадратичными
  • 4. Сортировка пузырьком for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) if(a[j] > a[j + 1]) swap(a[j], a[j + 1]);
  • 5. Сортировка пузырьком for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) if(a[j] > a[j + 1]) swap(a[j], a[j + 1]);
  • 6. Сортировка пузырьком Наилучший случай: изначальный массив уже отсортирован. Алгоритм совершает всего один проход по массиву. 0 1 2 3 4 5 6 7 8 9 Наихудший случай: изначальный массив отсортирован в n(n 1) обратном порядке. Алгоритм совершает сравнений. 2 9 8 7 6 5 4 3 2 1 0
  • 7. Сортировка выбором for (int i = 0; i < n - 1; i++) { count = A[i]; key=i; for (int j = i + 1; j < n; j++) if (A[j] < A[key]) key = j; if (key != i) { A[i] = A[key]; A[key] = count; } }
  • 8. Сортировка выбором n(n 1) Этот алгоритм совершает сравнений на любом 2 входном массиве. Но, в отличие от алгоритма сортировки пузырьком, производит всего n - 1 операций обмена.
  • 9. Сортировка вставками for(int i = 1; i < n; i++) for(int j = i; j > 0 && A[j-1] > A[j]; j--) swap(A[j-1], A[j]);
  • 10. Сортировка вставками Как и сортировка выбором, этот алгоритм совершает сравнений. n(n 1) 2 Алгоритм сортировки вставками может быть значительно ускорен при работе с большими массивами, если вместо обычного линейного поиска использовать бинарный