Технологии и методы программирования
Скачать 1.09 Mb.
|
Технологии и методы программированияOnline-edu.mirea.ru ФИО преподавателя: Русаков Алексей Михайловичe-mail: rusakov.a@mirea.ruПодготовил студент БСБО-02-19 Аушев Ахмед Борисович На тему: Алгоритмы сортировки. Бинарная вставка. Быстрая сортировка Хоару 1)Алгоритм сортировки Бинарная вставка 1.1)Пример работы сортировки 1.2) Реализация 1.3) Плюсы и минусы алгоритма 2) Быстрая сортировка Хоару 2.1) Пример работы сортировки 2.2) Примеры реализации на языках программирование СодержаниеАлгоритм работает по следующему принципу. К примеру есть часть массива, которая уже отсортирована, и требуется вставить остальные элементы массива в отсортированную часть, сохранив при этом упорядоченность. Для этого на каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированной части массива, до тех пор пока весь набор входных данных не будет отсортирован. Метод выбора очередного элемента из исходного массива произволен, однако обычно (и с целью получения устойчивого алгоритма сортировки), элементы вставляются по порядку их появления во входном массиве. Так как в процессе работы алгоритма могут меняться местами только соседние элементы, каждый обмен уменьшает число инверсий на единицу. Следовательно, количество обменов равно количеству инверсий в исходном массиве вне зависимости от реализации сортировки. Максимальное количество инверсий содержится в массиве, элементы которого отсортированы по не возрастаниюБинарная вставкаПример реализации на:
Плюсы и минусы Очень много перемещений элементов массива Алгоритм может работать с последовательно поступающими данными. Алгоритм эффективен при работе со списками, алгоритм отлично справляется с массивами небольшого размера высокая алгоритмическая сложность N² 7 Быстрая сортировка Хоара без медианного pivot элемента
Пример реализации на :Пример реализации на :Пример реализации на :var i = low;var j = high;var middle = arr[ Math.round(( low + high ) / 2) ];do {while(arr[i] < middle)++i;while(arr[j] > middle)--j;if(i <= j){var temp = arr[i];arr[i] = arr[j];arr[j] = temp;i++; j--;}}while(i < j);if(low < j){quickSort(arr, low, j);}if(i < high){quickSort(arr, i, high);}}Спасибо за внимание! |