SlideShare a Scribd company logo
СОРТИРОВКА СЛИЯНИЯМИ
СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ
МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ
ЧТО ТАКОЕ ОТСОРТИРОВАННЫЙ МАССИВ?
• В МАТЕМАТИКЕ НА ПРОИЗВОЛЬНОМ МНОЖЕСТВЕ G МОЖЕТ БЫТЬ ЗАДАНО
ОТНОШЕНИЕ Ρ, НАЗЫВАЕМОЕ ОТНОШЕНИЕМ СРАВНЕНИЯ, ЕСЛИ ДЛЯ ЛЮБЫХ A, B,
C ИЗ G ВЫПОЛНЯЕТСЯ УСЛОВИЕ:
ЕСЛИ (A Ρ B) И (B Ρ C), ТО (A Ρ C)
• ДЛЯ КОЛЬЦА ЦЕЛЫХ ЧИСЕЛ ИЛИ ПОЛЕЙ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ ТАКИМ
ОТНОШЕНИЕМ СРАВНЕНИЯ ЯВЛЯЕТСЯ ПРИВЫЧНОЕ НАМ ОТНОШЕНИЕ СРАВНЕНИЯ
“БОЛЬШЕ-МЕНЬШЕ” И ОБОЗНАЧАЕМОЕ СИМВОЛАМИ
< > <= >=
dmitry@protopopov.ru
ЧТО ТАКОЕ ОТСОРТИРОВАННЫЙ МАССИВ?
• ОДНОМЕРНЫЙ МАССИВ [A0, A1, … , AN-1] НАЗЫВАЕТСЯ ОТСОРТИРОВАННЫМ
ОТНОСИТЕЛЬНО ОТНОШЕНИЯ СРАВНЕНИЯ Ρ ЕСЛИ ВЫПОЛНЯЕТСЯ УСЛОВИЕ
ЕСЛИ I<J , ТО (AI Ρ AJ)
• В НАИБОЛЕЕ ЧАСТЫХ СИТУАЦИЯХ МЫ РАССМАТРИВАЕМ ЛИБО МАССИВЫ
ЦЕЛЫХ ЧИСЕЛ, ЛИБО МАССИВЫ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ, И
УПОРЯДОЧИВАЕМ МАССИВЫ ЛИБО ПО ВОЗРАСТАНИЮ, ЛИБО ПО УБЫВАНИЮ
dmitry@protopopov.ru
КАК ОПРЕДЕЛЯЕТСЯ ОТНОШЕНИЕ
СРАВНЕНИЯ В ПРОГРАММАХ
• КЛАССИЧЕСКИМ СПОСОБОМ ОПРЕДЕЛЕНИЯ ОТНОШЕНИЯ СРАВНЕНИЯ ДВУХ ОБЪЕКТОВ В
ПРОГРАММАХ ЯВЛЯЕТСЯ ОБЪЯВЛЕНИЕ ФУНКЦИИ С ДВУМЯ АРГУМЕНТАМИ – ССЫЛКАМИ НА
СРАВНИВАЕМЫЕ ОБЪЕКТЫ ИЛИ АРГУМЕНТАМИ-ИНСТАНСАМИ СРАВНИВАЕМЫХ ОБЪЕКТОВ,
ПРОФИЛЬ КОТОРОЙ СЛЕДУЮЩИЙ
𝑓 𝑎, 𝑏 < 0, ЕСЛИ A < B
𝑓 𝑎, 𝑏 > 0, ЕСЛИ A > B
𝑓 𝑎, 𝑏 == 0, ЕСЛИ A == B
• ОПРЕДЕЛЁННАЯ ТАКИМ ОБРАЗОМ ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ В КАЧЕСТВЕ АРГУМЕНТА АЛГОРИТМА
СОРТИРОВКИ ОДНОМЕРНОГО МАССИВА
dmitry@protopopov.ru
КАК ОПРЕДЕЛЯЕТСЯ ОТНОШЕНИЕ
СРАВНЕНИЯ В ПРОГРАММАХ
• ДЛЯ СРАВНЕНИЯ ДВУХ ЦЕЛЫХ ЧИСЕЛ В ПРОГРАММАХ ОБЪЯВЛЯЕТСЯ ФУНКЦИЯ
СЛЕДУЮЩЕГО ВИДА
INT COMPARE(INT A,INT B) { RETURN (A-B); }
• ОЧЕВИДНО, ЧТО ДЛЯ ТАКОЙ ФУНКЦИИ ВЫПОЛНЕНО
COMPARE(A,B) < 0 ЕСЛИ A < B
COMPARE(A,B) > 0 ЕСЛИ A > B
COMPARE(A,B) == 0 ЕСЛИ A == B
• ДЛЯ ОПРЕДЕЛЕНИЯ ОБРАТНОГО ПОРЯДКА СОРТИРОВКИ ДОСТАТОЧНО УМНОЖИТЬ
ДАННУЮ ФУНКЦИЮ НА -1
dmitry@protopopov.ru
СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ
ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН
ОТСОРТИРОВАННЫЙ МАССИВ
• БАЗОВЫМ АЛГОРИТМОМ ДЛЯ АЛГОРИТМА СОРТИРОВКИ СЛИЯНИЯМИ ЯВЛЯЕТСЯ АЛГОРИТМ
СЛИЯНИЯ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН
ОТСОРТИРОВАННЫЙ МАССИВ
• НА ВХОД АЛГОРИТМА ПОСТУПАЮТ ОТСОРТИРОВАННЫЕ ОДНОМЕРНЫЕ МАССИВЫ
РАЗЛИЧНОЙ ДЛИНЫ. БЕЗ ОГРАНИЧЕНИЯ ОБЩНОСТИ, РАССМОТРИМ ОТСОРТИРОВАННЫЕ
ПО-ВОЗРАСТАНИЮ МАССИВЫ.
1. КАЖДЫЙ МАССИВ РАССМАТРИВАЕТСЯ КАК ОЧЕРЕДЬ ИЗ ЭЛЕМЕНТОВ
2. ПОКА В ОЧЕРЕДЯХ ЕСТЬ ЭЛЕМЕНТЫ, ТО СРАВНИВАЕМ ПЕРВЫЕ ЭЛЕМЕНТЫ ИЗ ОЧЕРЕДЕЙ И
НАИМЕНЬШИЙ ЭЛЕМЕНТ ПЕРЕНОСИМ В КОНЕЦ ИТОГОВОГО МАССИВА, ПРИ ЭТОМ
СООТВЕТСТВУЮЩАЯ ОЧЕРЕДЬ УМЕНЬШАЕТСЯ.
3. ЕСЛИ ОСТАЛАСЬ ТОЛЬКО ОДНА НЕПУСТАЯ ОЧЕРЕДЬ, ТО ВСЕ ЕЁ ЭЛЕМЕНТЫ ПЕРЕНОСИМ В КОНЕЦ
ИТОГОВОГО МАССИВА
dmitry@protopopov.ru
СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ
ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН
ОТСОРТИРОВАННЫЙ МАССИВ
СХЕМА СЛИЯНИЯ МАССИВОВ
dmitry@protopopov.ru
Выбор
минимального
значения
СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ
ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН
ОТСОРТИРОВАННЫЙ МАССИВ
• АЛГОРИТМ СЛИЯНИЯ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В
ОДИН ОТСОРТИРОВАННЫЙ МАССИВ ПРИМЕНЯЕТСЯ ТАКЖЕ И В ДРУГИХ
АЛГОРИТМАХ СОРТИРОВКИ, НАПРИМЕР:
• НА ШАГЕ ЧЁТНО-НЕЧЁТНОЙ СОРТИРОВКИ, С РЕАЛИЗАЦИЕЙ, ПРОИЗВОДЯЩЕЙ
СЛИЯНИЕ ДВУХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ
• НА ШАГЕ БИТОНИЧЕСКОЙ СОРТИРОВКИ, ПРИ СЛИЯНИИ УЖЕ ОТСОРТИРОВАННЫХ
МАССИВОВ РАЗМЕРА СТЕПЕНИ ДВОЙКИ.
• МОЖЕТ ТАКЖЕ ПРИМЕНЯТСЯ НА ШАГЕ КОРЗИННОЙ СОРТИРОВКИ, В
ЗАВИСИМОСТИ ОТ ВЫБОРА СПОСОБА ФОРМИРОВАНИЯ КОРЗИН
dmitry@protopopov.ru
СОРТИРОВКА СЛИЯНИЯМИ
• ДЛЯ СОРТИРОВКИ СЛИЯНИЯМИ ИСПОЛЬЗУЕТСЯ СЛЕДУЮЩИЙ АЛГОРИТМ:
1. РАЗДЕЛЯЕМ ИСХОДНЫЙ МАССИВ НА НЕСКОЛЬКО ПОДМАССИВОВ
2. ПРОИЗВОДИМ СОРТИРОВКУ КАЖДОГО МАССИВА ЛИБО РЕКУРСИВНЫМ ВЫЗОВОМ
АЛГОРИТМА, ЛИБО КАКИМ-ЛИБО ДРУГИМ АЛГОРИТМОМ СОРТИРОВКИ
3. ПРОИЗВОДИМ СЛИЯНИЕ ОТСОРТИРОВАННЫХ ПОДМАССИВОВ В ИТОГОВЫЙ
МАССИВ
ПРИМЕЧАНИЕ - МОЖНО ПРОИЗВОДИТЬ РЕКУРСИВНОЕ ДЕЛЕНИЕ ПОДМАССИВОВ
ВПЛОТЬ ДО РАЗМЕРА ИЗ ОДНОГО ЭЛЕМЕНТА. ОЧЕВИДНО, ЧТО МАССИВ ИЗ
ОДНОГО ЭЛЕМЕНТА ЯВЛЯЕТСЯ ОТСОРТИРОВАННЫМ МАССИВОМ.
dmitry@protopopov.ru
СОРТИРОВКА СЛИЯНИЯМИ
• СХЕМА СОРТИРОВКИ СЛИЯНИЯМИ
dmitry@protopopov.ru
Исходный неотсортированный
массив
Итоговый отсортированный массив
ИСПОЛЬЗОВАНИЕ СОРТИРОВКИ
СЛИЯНИЯМИ ПРИ ПАРАЛЛЕЛЬНОЙ
ОБРАБОТКЕ
• АЛГОРИТМ СЛИЯНИЯ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ
МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ ИСПОЛЬЗУЕТСЯ ПРИ
ПАРАЛЛЕЛЬНОЙ ОБРАБОТКЕ ОБЫЧНО ТОЛЬКО КАК ЧАСТЬ ОБЩЕГО
АЛГОРИТМА, ВЫПОЛНЯЕМОГО В ПОТОКЕ ИЛИ НА ПРОЦЕССОРЕ, ПОСКОЛЬКУ
НЕ МОЖЕТ БЫТЬ РАЗДЕЛЁН НА НЕЗАВИСИМЫЕ ЗАДАЧИ, ВЫПОЛНЯЕМЫЕ
ПАРАЛЛЕЛЬНО. ДЛЯ ЭТОГО АЛГОРИТМА ТРЕБУЕТСЯ ПОСЛЕДОВАТЕЛЬНЫЙ
ДОСТУП К ДАННЫМ ПОДМАССИВОВ-ОЧЕРЕДЕЙ.
• ПАРАЛЛЕЛЬНОСТЬ СОРТИРОВКИ СЛИЯНИЯМИ МОЖЕТ БЫТЬ ПОЛУЧЕНА
ТОЛЬКО НА ПАРАЛЛЕЛЬНОЙ ОБРАБОТКЕ ПОДМАССИВОВ, НА КОТОРЫЕ БУДЕТ
РАЗДЕЛЁН ИСХОДНЫЙ МАССИВ
dmitry@protopopov.ru
СПАСИБО ЗА ВНИМАНИЕ
• КОНТАКТЫ
• ДМИТРИЙ ПРОТОПОПОВ, МОСКВА, РОССИЯ
DMITRY@PROTOPOPOV.RU
+7 916 6969591
ИСХОДНЫЕ КОДЫ И ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ДОСТУПНЫ ПО АДРЕСУ
HTTPS://GITHUB.COM/DPROTOPOPOV/PARALLELSORTING
dmitry@protopopov.ru

More Related Content

What's hot

ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Alexey Paznikov
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Alexey Paznikov
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Mikhail Kurnosov
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Alexey Paznikov
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
Alexey Paznikov
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
битоническая сортировка
битоническая сортировкабитоническая сортировка
битоническая сортировка
Dmitry Protopopov
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
Mikhail Kurnosov
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Mikhail Kurnosov
 
корзинная сортировка
корзинная сортировкакорзинная сортировка
корзинная сортировка
Dmitry Protopopov
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
Alexey Paznikov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
Mikhail Kurnosov
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
Alexey Paznikov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 

What's hot (20)

ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
битоническая сортировка
битоническая сортировкабитоническая сортировка
битоническая сортировка
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
 
корзинная сортировка
корзинная сортировкакорзинная сортировка
корзинная сортировка
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 

Recently uploaded

أفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdf
أفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdfأفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdf
أفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdf
qorrectdm
 
النزاع-ا لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdf
النزاع-ا   لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdfالنزاع-ا   لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdf
النزاع-ا لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdf
Gamal Mansour
 
الهندسيه الميكانيكيه الشامله hvac 1
الهندسيه  الميكانيكيه  الشامله  hvac   1الهندسيه  الميكانيكيه  الشامله  hvac   1
الهندسيه الميكانيكيه الشامله hvac 1
maymohamed29
 
guia informatica Guanajuato modulo 22 nuples
guia informatica Guanajuato modulo 22 nuplesguia informatica Guanajuato modulo 22 nuples
guia informatica Guanajuato modulo 22 nuples
Examenes Preparatoria Abierta
 
Ingresantes en el examen general unap 2023 I.pdf
Ingresantes en el examen general unap 2023 I.pdfIngresantes en el examen general unap 2023 I.pdf
Ingresantes en el examen general unap 2023 I.pdf
wilfacemeet
 
DAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptx
DAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptxDAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptx
DAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptx
divadewantara1
 

Recently uploaded (6)

أفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdf
أفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdfأفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdf
أفضل 11 موقع لعمل اختبارات إلكترونية (Slide Decks).pdf
 
النزاع-ا لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdf
النزاع-ا   لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdfالنزاع-ا   لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdf
النزاع-ا لعرقي-والقبلي-في-دولة-جنوب-السودان-وانعكاساته-على-بناء-الدولة-4.pdf
 
الهندسيه الميكانيكيه الشامله hvac 1
الهندسيه  الميكانيكيه  الشامله  hvac   1الهندسيه  الميكانيكيه  الشامله  hvac   1
الهندسيه الميكانيكيه الشامله hvac 1
 
guia informatica Guanajuato modulo 22 nuples
guia informatica Guanajuato modulo 22 nuplesguia informatica Guanajuato modulo 22 nuples
guia informatica Guanajuato modulo 22 nuples
 
Ingresantes en el examen general unap 2023 I.pdf
Ingresantes en el examen general unap 2023 I.pdfIngresantes en el examen general unap 2023 I.pdf
Ingresantes en el examen general unap 2023 I.pdf
 
DAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptx
DAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptxDAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptx
DAFTAR LAMPIRAN CIP FORTUNA [Autosaved].pptx
 

чётно нечётная сортировка

  • 1. СОРТИРОВКА СЛИЯНИЯМИ СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ
  • 2. ЧТО ТАКОЕ ОТСОРТИРОВАННЫЙ МАССИВ? • В МАТЕМАТИКЕ НА ПРОИЗВОЛЬНОМ МНОЖЕСТВЕ G МОЖЕТ БЫТЬ ЗАДАНО ОТНОШЕНИЕ Ρ, НАЗЫВАЕМОЕ ОТНОШЕНИЕМ СРАВНЕНИЯ, ЕСЛИ ДЛЯ ЛЮБЫХ A, B, C ИЗ G ВЫПОЛНЯЕТСЯ УСЛОВИЕ: ЕСЛИ (A Ρ B) И (B Ρ C), ТО (A Ρ C) • ДЛЯ КОЛЬЦА ЦЕЛЫХ ЧИСЕЛ ИЛИ ПОЛЕЙ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ ТАКИМ ОТНОШЕНИЕМ СРАВНЕНИЯ ЯВЛЯЕТСЯ ПРИВЫЧНОЕ НАМ ОТНОШЕНИЕ СРАВНЕНИЯ “БОЛЬШЕ-МЕНЬШЕ” И ОБОЗНАЧАЕМОЕ СИМВОЛАМИ < > <= >= dmitry@protopopov.ru
  • 3. ЧТО ТАКОЕ ОТСОРТИРОВАННЫЙ МАССИВ? • ОДНОМЕРНЫЙ МАССИВ [A0, A1, … , AN-1] НАЗЫВАЕТСЯ ОТСОРТИРОВАННЫМ ОТНОСИТЕЛЬНО ОТНОШЕНИЯ СРАВНЕНИЯ Ρ ЕСЛИ ВЫПОЛНЯЕТСЯ УСЛОВИЕ ЕСЛИ I<J , ТО (AI Ρ AJ) • В НАИБОЛЕЕ ЧАСТЫХ СИТУАЦИЯХ МЫ РАССМАТРИВАЕМ ЛИБО МАССИВЫ ЦЕЛЫХ ЧИСЕЛ, ЛИБО МАССИВЫ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ, И УПОРЯДОЧИВАЕМ МАССИВЫ ЛИБО ПО ВОЗРАСТАНИЮ, ЛИБО ПО УБЫВАНИЮ dmitry@protopopov.ru
  • 4. КАК ОПРЕДЕЛЯЕТСЯ ОТНОШЕНИЕ СРАВНЕНИЯ В ПРОГРАММАХ • КЛАССИЧЕСКИМ СПОСОБОМ ОПРЕДЕЛЕНИЯ ОТНОШЕНИЯ СРАВНЕНИЯ ДВУХ ОБЪЕКТОВ В ПРОГРАММАХ ЯВЛЯЕТСЯ ОБЪЯВЛЕНИЕ ФУНКЦИИ С ДВУМЯ АРГУМЕНТАМИ – ССЫЛКАМИ НА СРАВНИВАЕМЫЕ ОБЪЕКТЫ ИЛИ АРГУМЕНТАМИ-ИНСТАНСАМИ СРАВНИВАЕМЫХ ОБЪЕКТОВ, ПРОФИЛЬ КОТОРОЙ СЛЕДУЮЩИЙ 𝑓 𝑎, 𝑏 < 0, ЕСЛИ A < B 𝑓 𝑎, 𝑏 > 0, ЕСЛИ A > B 𝑓 𝑎, 𝑏 == 0, ЕСЛИ A == B • ОПРЕДЕЛЁННАЯ ТАКИМ ОБРАЗОМ ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ В КАЧЕСТВЕ АРГУМЕНТА АЛГОРИТМА СОРТИРОВКИ ОДНОМЕРНОГО МАССИВА dmitry@protopopov.ru
  • 5. КАК ОПРЕДЕЛЯЕТСЯ ОТНОШЕНИЕ СРАВНЕНИЯ В ПРОГРАММАХ • ДЛЯ СРАВНЕНИЯ ДВУХ ЦЕЛЫХ ЧИСЕЛ В ПРОГРАММАХ ОБЪЯВЛЯЕТСЯ ФУНКЦИЯ СЛЕДУЮЩЕГО ВИДА INT COMPARE(INT A,INT B) { RETURN (A-B); } • ОЧЕВИДНО, ЧТО ДЛЯ ТАКОЙ ФУНКЦИИ ВЫПОЛНЕНО COMPARE(A,B) < 0 ЕСЛИ A < B COMPARE(A,B) > 0 ЕСЛИ A > B COMPARE(A,B) == 0 ЕСЛИ A == B • ДЛЯ ОПРЕДЕЛЕНИЯ ОБРАТНОГО ПОРЯДКА СОРТИРОВКИ ДОСТАТОЧНО УМНОЖИТЬ ДАННУЮ ФУНКЦИЮ НА -1 dmitry@protopopov.ru
  • 6. СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ • БАЗОВЫМ АЛГОРИТМОМ ДЛЯ АЛГОРИТМА СОРТИРОВКИ СЛИЯНИЯМИ ЯВЛЯЕТСЯ АЛГОРИТМ СЛИЯНИЯ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ • НА ВХОД АЛГОРИТМА ПОСТУПАЮТ ОТСОРТИРОВАННЫЕ ОДНОМЕРНЫЕ МАССИВЫ РАЗЛИЧНОЙ ДЛИНЫ. БЕЗ ОГРАНИЧЕНИЯ ОБЩНОСТИ, РАССМОТРИМ ОТСОРТИРОВАННЫЕ ПО-ВОЗРАСТАНИЮ МАССИВЫ. 1. КАЖДЫЙ МАССИВ РАССМАТРИВАЕТСЯ КАК ОЧЕРЕДЬ ИЗ ЭЛЕМЕНТОВ 2. ПОКА В ОЧЕРЕДЯХ ЕСТЬ ЭЛЕМЕНТЫ, ТО СРАВНИВАЕМ ПЕРВЫЕ ЭЛЕМЕНТЫ ИЗ ОЧЕРЕДЕЙ И НАИМЕНЬШИЙ ЭЛЕМЕНТ ПЕРЕНОСИМ В КОНЕЦ ИТОГОВОГО МАССИВА, ПРИ ЭТОМ СООТВЕТСТВУЮЩАЯ ОЧЕРЕДЬ УМЕНЬШАЕТСЯ. 3. ЕСЛИ ОСТАЛАСЬ ТОЛЬКО ОДНА НЕПУСТАЯ ОЧЕРЕДЬ, ТО ВСЕ ЕЁ ЭЛЕМЕНТЫ ПЕРЕНОСИМ В КОНЕЦ ИТОГОВОГО МАССИВА dmitry@protopopov.ru
  • 7. СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ СХЕМА СЛИЯНИЯ МАССИВОВ dmitry@protopopov.ru Выбор минимального значения
  • 8. СЛИЯНИЕ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ • АЛГОРИТМ СЛИЯНИЯ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ ПРИМЕНЯЕТСЯ ТАКЖЕ И В ДРУГИХ АЛГОРИТМАХ СОРТИРОВКИ, НАПРИМЕР: • НА ШАГЕ ЧЁТНО-НЕЧЁТНОЙ СОРТИРОВКИ, С РЕАЛИЗАЦИЕЙ, ПРОИЗВОДЯЩЕЙ СЛИЯНИЕ ДВУХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ • НА ШАГЕ БИТОНИЧЕСКОЙ СОРТИРОВКИ, ПРИ СЛИЯНИИ УЖЕ ОТСОРТИРОВАННЫХ МАССИВОВ РАЗМЕРА СТЕПЕНИ ДВОЙКИ. • МОЖЕТ ТАКЖЕ ПРИМЕНЯТСЯ НА ШАГЕ КОРЗИННОЙ СОРТИРОВКИ, В ЗАВИСИМОСТИ ОТ ВЫБОРА СПОСОБА ФОРМИРОВАНИЯ КОРЗИН dmitry@protopopov.ru
  • 9. СОРТИРОВКА СЛИЯНИЯМИ • ДЛЯ СОРТИРОВКИ СЛИЯНИЯМИ ИСПОЛЬЗУЕТСЯ СЛЕДУЮЩИЙ АЛГОРИТМ: 1. РАЗДЕЛЯЕМ ИСХОДНЫЙ МАССИВ НА НЕСКОЛЬКО ПОДМАССИВОВ 2. ПРОИЗВОДИМ СОРТИРОВКУ КАЖДОГО МАССИВА ЛИБО РЕКУРСИВНЫМ ВЫЗОВОМ АЛГОРИТМА, ЛИБО КАКИМ-ЛИБО ДРУГИМ АЛГОРИТМОМ СОРТИРОВКИ 3. ПРОИЗВОДИМ СЛИЯНИЕ ОТСОРТИРОВАННЫХ ПОДМАССИВОВ В ИТОГОВЫЙ МАССИВ ПРИМЕЧАНИЕ - МОЖНО ПРОИЗВОДИТЬ РЕКУРСИВНОЕ ДЕЛЕНИЕ ПОДМАССИВОВ ВПЛОТЬ ДО РАЗМЕРА ИЗ ОДНОГО ЭЛЕМЕНТА. ОЧЕВИДНО, ЧТО МАССИВ ИЗ ОДНОГО ЭЛЕМЕНТА ЯВЛЯЕТСЯ ОТСОРТИРОВАННЫМ МАССИВОМ. dmitry@protopopov.ru
  • 10. СОРТИРОВКА СЛИЯНИЯМИ • СХЕМА СОРТИРОВКИ СЛИЯНИЯМИ dmitry@protopopov.ru Исходный неотсортированный массив Итоговый отсортированный массив
  • 11. ИСПОЛЬЗОВАНИЕ СОРТИРОВКИ СЛИЯНИЯМИ ПРИ ПАРАЛЛЕЛЬНОЙ ОБРАБОТКЕ • АЛГОРИТМ СЛИЯНИЯ ДВУХ ИЛИ НЕСКОЛЬКИХ ОТСОРТИРОВАННЫХ МАССИВОВ В ОДИН ОТСОРТИРОВАННЫЙ МАССИВ ИСПОЛЬЗУЕТСЯ ПРИ ПАРАЛЛЕЛЬНОЙ ОБРАБОТКЕ ОБЫЧНО ТОЛЬКО КАК ЧАСТЬ ОБЩЕГО АЛГОРИТМА, ВЫПОЛНЯЕМОГО В ПОТОКЕ ИЛИ НА ПРОЦЕССОРЕ, ПОСКОЛЬКУ НЕ МОЖЕТ БЫТЬ РАЗДЕЛЁН НА НЕЗАВИСИМЫЕ ЗАДАЧИ, ВЫПОЛНЯЕМЫЕ ПАРАЛЛЕЛЬНО. ДЛЯ ЭТОГО АЛГОРИТМА ТРЕБУЕТСЯ ПОСЛЕДОВАТЕЛЬНЫЙ ДОСТУП К ДАННЫМ ПОДМАССИВОВ-ОЧЕРЕДЕЙ. • ПАРАЛЛЕЛЬНОСТЬ СОРТИРОВКИ СЛИЯНИЯМИ МОЖЕТ БЫТЬ ПОЛУЧЕНА ТОЛЬКО НА ПАРАЛЛЕЛЬНОЙ ОБРАБОТКЕ ПОДМАССИВОВ, НА КОТОРЫЕ БУДЕТ РАЗДЕЛЁН ИСХОДНЫЙ МАССИВ dmitry@protopopov.ru
  • 12. СПАСИБО ЗА ВНИМАНИЕ • КОНТАКТЫ • ДМИТРИЙ ПРОТОПОПОВ, МОСКВА, РОССИЯ DMITRY@PROTOPOPOV.RU +7 916 6969591 ИСХОДНЫЕ КОДЫ И ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ДОСТУПНЫ ПО АДРЕСУ HTTPS://GITHUB.COM/DPROTOPOPOV/PARALLELSORTING dmitry@protopopov.ru