СОРТИРОВКА Комбинаторные алгоритмы Выполнил: Припадчев Артём, группа 1125.

Презентация:



Advertisements
Похожие презентации
Двоичный поиск в упорядоченном массиве l hm 33 private static int binSearch(int[] data,
Advertisements

2. Алгоритм Рабина – Карпа Функция:= 11 Число сравнений символов: = 9 Значения функции на подстроках:
Алгоритмы поиска подстроки в строке 1. «Наивный» алгоритм грубой силы оба обобрали обои бобра обои Число сравнений символов: = 24.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
САОД, каф.ОСУ, АВТФ, НИУ РФ ТПУ1 Обменные сортировки:BubbleSort Алгоритм прямого обмена основывается на сравнении и смене позиций пары соседних.
Двоичный поиск в упорядоченном массиве l hm 33 private static int binSearch(int[] data,
4. Алгоритм Бойера - Мура оба одобрили обои бобра обои аби 4424 лор 414 Число сравнений символов: = 10.
SAOD, dep.OSU, TPU1 Методы сортировки Сортировка - это процесс упорядочения некоторого множества элементов, на котором определены отношения порядка.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Маршруты на графах Нахождение компонент связности Поиск маршрутов, удовлетворяющим определённым требованиям Кратчайшие маршруты.
Перечисления и массивы 1 ©Павловская Т.А. (НИУ ИТМО)
Язык C++ Лекция 2. Недостатки enumов Засорение namespaceа, в котором находится enum Соответственно, члены enumа должны иметь уникальный префикс.
Перечисления и массивы 1 ©Павловская Т.А. (СПбГУ ИТМО)
Алгоритм
Представление графов. Матрица смежности Граф:
2. Классы.Полиморфизм.. Перегрузка функций void f(); void f(int value); void f(doublevalue); void f(int value, int nextValue); … f(); f(12); f(12.0);
Массивы в С#. Массивом называют упорядоченную последовательность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов.
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Алгоритмы поиска подстроки в строке 1. «Наивный» алгоритм оба обобрали обои бобра обои Число сравнений символов: = 24 public static.
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Транксрипт:

СОРТИРОВКА Комбинаторные алгоритмы Выполнил: Припадчев Артём, группа 1125

Дональд Шелл 1959 год Среднее время работы алгоритма: t = a*N 1.5

public static long shellSort(int[] array) { Stopwatch sw = new Stopwatch(); sw.Start(); int step = array.Length / 2; while (step > 0) { int i, j; for (i = step; i < array.Length; i++) { int value = array[i]; for (j = i - step; (j >= 0) && (array[j] > value); j -= step) array[j + step] = array[j]; array[j + step] = value; } step /= 2; } sw.Stop(); return sw.ElapsedTicks;

Чарльз Хоар 1960 год Среднее время работы алгоритма: t = N * log N

array[A] = array[B]; array[B] = T; ++A; --B; } if (a < B) Sort.QuickSort(array, a, B); if (A < b) QuickSort(array, A, b); } sw.Stop(); return sw.ElapsedTicks; public static long QuickSort(int[] array, int a, int b) { Stopwatch sw = new Stopwatch(); sw.Start(); int A = a; int B = b; double mid; if (b > a) { mid = array[(a + b) / 2]; while (A <= B) { while ((A < b) && (array[A] < mid)) ++A; while ((B > a) && (array[B] > mid)) --B; if (A <= B) { int T; T = array[A];

t = 0.185*N*log(N)

t = 0.1*N*log(N)

private static void IntroSort(T[] keys, int lo, int hi, int depthLimit, IComparer comparer) { while (hi > lo) { int num = (hi - lo) + 1; if (num <= 0x10) { switch (num) { case 1: return; case 2: ArraySortHelper.SwapIfGreater(keys, comparer, lo, hi); return; case 3: ArraySortHelper.SwapIfGreater(keys, comparer, lo, hi - 1); ArraySortHelper.SwapIfGreater(keys, comparer, lo, hi); ArraySortHelper.SwapIfGreater(keys, comparer, hi - 1, hi); return; } ArraySortHelper.InsertionSort(keys, lo, hi, comparer); return; } if (depthLimit == 0) { ArraySortHelper.Heapsort(keys, lo, hi, comparer); return; } depthLimit--; int num2 = ArraySortHelper.PickPivotAndPartition(keys, lo, hi, comparer); ArraySortHelper.IntroSort(keys, num2 + 1, hi, depthLimit, comparer); hi = num2 - 1; }

InsertionSort Heapsort (Пирамидальная сортировка) t = N * log N t = N 2 Introsort (интроспективная сортировка) InsertionSort InsertionSort Heapsort Heapsort

Выводы: Самой эффективной оказалась встроенная в.NET сортировка, т.к. она включает в себя анализ переданных ей входных данных и вызывает различные методы сортировки Самой эффективной оказалась встроенная в.NET сортировка, т.к. она включает в себя анализ переданных ей входных данных и вызывает различные методы сортировки Для коллекций, в которых количество элементов меньше 512 лучше использовать сортировку методом Шелла, нежели QuickSort (если не использовать встроенную) Для коллекций, в которых количество элементов меньше 512 лучше использовать сортировку методом Шелла, нежели QuickSort (если не использовать встроенную) Для коллекций, в которых более 512 элементов продуктивнее использовать QuickSort (если не использовать встроенную) Для коллекций, в которых более 512 элементов продуктивнее использовать QuickSort (если не использовать встроенную)