SlideShare a Scribd company logo
1 of 49
Сортировка и поиск Федор Царев Спецкурс «Олимпиадное программирование» Лекция 2 22 .12.2008 Санкт-Петербург, Гимназия 261
Цель лекции ,[object Object],[object Object]
Зачем это надо? ,[object Object]
Задача сортировки ,[object Object],[object Object],[object Object],[object Object],[object Object]
Обмен двух переменных ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Без дополнительной переменной (1) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Без дополнительной переменной (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Сортировка выбором ,[object Object],[object Object]
Программа ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Оценка алгоритма ,[object Object],[object Object],[object Object],[object Object]
Сортировка вставками ,[object Object]
Программа  (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Программа  (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Оценка алгоритма ,[object Object],[object Object],[object Object],[object Object]
Сортировка пузырьком ,[object Object],[object Object],[object Object]
Демонстрация С сайта  ru.wikipedia.org
Программа ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Оценка алгоритма ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Сортировка слиянием ,[object Object],[object Object]
Метод «разделяй-и-властвуй» ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Дерево сортировки слиянием
Слияние массивов (1) ,[object Object],[object Object],[object Object]
Слияние массивов (2) ,[object Object],[object Object]
Слияние массивов – программа  (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Слияние массивов – программа  (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
И, наконец… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Оценка времени работы ,[object Object],[object Object],[object Object],[object Object]
Быстрая сортировка ,[object Object],[object Object]
Идея алгоритма ,[object Object],[object Object],[object Object]
Демонстрация работы С сайта  ru.wikipedia.org
Дерево в лучшем случае
Дерево в худшем случае
Программа ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Упражнения ,[object Object],[object Object],[object Object],[object Object]
Оценка времени работы ,[object Object],[object Object],[object Object],[object Object],[object Object]
Сортировка с помощью кучи ,[object Object],[object Object],[object Object]
Устойчивость сортировки ,[object Object],[object Object],[object Object]
Упражнение ,[object Object]
Задача поиска ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Линейный поиск ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Двоичный поиск ,[object Object],[object Object],[object Object],[object Object],[object Object]
Инвариант цикла ,[object Object],[object Object],[object Object],[object Object]
Инвариант для двоичного поиска ,[object Object],[object Object],[object Object],[object Object]
Программа ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Двоичный поиск После окончания цикла Перед началом цикла
Упражнения ,[object Object],[object Object],[object Object]
Другие варианты поиска ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Выводы ,[object Object],[object Object],[object Object]
Спасибо за внимание! Вопросы?   Комментарии? [email_address]

More Related Content

What's hot

Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
Technopark
 
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Roman Elizarov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Mikhail Kurnosov
 
Многопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и ПрактикаМногопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и Практика
Roman Elizarov
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
Technopark
 
Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)
Roman Elizarov
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
Mikhail Kurnosov
 

What's hot (20)

Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Многопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и ПрактикаМногопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и Практика
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
 
List - списки
List - списки List - списки
List - списки
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 

Viewers also liked (8)

05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программирование
 
BINARY SEARCH TREE
BINARY SEARCH TREEBINARY SEARCH TREE
BINARY SEARCH TREE
 
Лекция 5: Бинарные деревья поиска
Лекция 5: Бинарные деревья поискаЛекция 5: Бинарные деревья поиска
Лекция 5: Бинарные деревья поиска
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Binary search tree(bst)
Binary search tree(bst)Binary search tree(bst)
Binary search tree(bst)
 
Binary tree
Binary treeBinary tree
Binary tree
 
(Binary tree)
(Binary tree)(Binary tree)
(Binary tree)
 
Binary tree
Binary  treeBinary  tree
Binary tree
 

Similar to 02 сортировка и поиск

сортировка массива
сортировка массивасортировка массива
сортировка массива
longe7
 
1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptx
rdes1
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
sharikdp
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции
Fedor Tsarev
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Mikhail Kurnosov
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
Mikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
Technopark
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
Екатерина Луговова
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
Mikhail Kurnosov
 
291 цикл уроков на тему массивы
291 цикл уроков на тему  массивы291 цикл уроков на тему  массивы
291 цикл уроков на тему массивы
sany0507
 
якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)
Michael Karpov
 

Similar to 02 сортировка и поиск (20)

сортировка массива
сортировка массивасортировка массива
сортировка массива
 
01 линейные структуры данных
01 линейные структуры данных01 линейные структуры данных
01 линейные структуры данных
 
1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptx
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции
 
03 двоичные деревья поиска и очередь с приоритетами
03 двоичные деревья поиска и очередь с приоритетами03 двоичные деревья поиска и очередь с приоритетами
03 двоичные деревья поиска и очередь с приоритетами
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
 
05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программирование
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
87
8787
87
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
291 цикл уроков на тему массивы
291 цикл уроков на тему  массивы291 цикл уроков на тему  массивы
291 цикл уроков на тему массивы
 
якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)
 

More from Fedor Tsarev

Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...
Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...
Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...
Fedor Tsarev
 
On NP-Hardness of the Paired de Bruijn Sound Cycle Problem
On NP-Hardness of the Paired de Bruijn Sound Cycle ProblemOn NP-Hardness of the Paired de Bruijn Sound Cycle Problem
On NP-Hardness of the Paired de Bruijn Sound Cycle Problem
Fedor Tsarev
 
Сборка генома de novo: мифы и реальность
Сборка генома de novo: мифы и реальностьСборка генома de novo: мифы и реальность
Сборка генома de novo: мифы и реальность
Fedor Tsarev
 
Talk at dnGASP workshop, April 5, 2011
Talk at dnGASP workshop, April 5, 2011Talk at dnGASP workshop, April 5, 2011
Talk at dnGASP workshop, April 5, 2011
Fedor Tsarev
 
Problem solving on acm international collegiate programming contest
Problem solving on acm international collegiate programming contestProblem solving on acm international collegiate programming contest
Problem solving on acm international collegiate programming contest
Fedor Tsarev
 

More from Fedor Tsarev (8)

We are the champions: programming world champions from Russia. Why and what for?
We are the champions: programming world champions from Russia. Why and what for?We are the champions: programming world champions from Russia. Why and what for?
We are the champions: programming world champions from Russia. Why and what for?
 
Becoming a World Champion in Programming: Keep Calm and Compete
Becoming a World Champion in Programming: Keep Calm and CompeteBecoming a World Champion in Programming: Keep Calm and Compete
Becoming a World Champion in Programming: Keep Calm and Compete
 
Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...
Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...
Сборка генома: мифы и реальность. Доклад на пленарном заседании III Всероссий...
 
On NP-Hardness of the Paired de Bruijn Sound Cycle Problem
On NP-Hardness of the Paired de Bruijn Sound Cycle ProblemOn NP-Hardness of the Paired de Bruijn Sound Cycle Problem
On NP-Hardness of the Paired de Bruijn Sound Cycle Problem
 
Сборка генома de novo: мифы и реальность
Сборка генома de novo: мифы и реальностьСборка генома de novo: мифы и реальность
Сборка генома de novo: мифы и реальность
 
Talk at dnGASP workshop, April 5, 2011
Talk at dnGASP workshop, April 5, 2011Talk at dnGASP workshop, April 5, 2011
Talk at dnGASP workshop, April 5, 2011
 
Доклад на семинаре в лаборатории алгоритмической биологии АУ
Доклад на семинаре в лаборатории алгоритмической биологии АУДоклад на семинаре в лаборатории алгоритмической биологии АУ
Доклад на семинаре в лаборатории алгоритмической биологии АУ
 
Problem solving on acm international collegiate programming contest
Problem solving on acm international collegiate programming contestProblem solving on acm international collegiate programming contest
Problem solving on acm international collegiate programming contest
 

02 сортировка и поиск