JS Fest 2019/Autumn. Adam Leos. So why do you need to know Algorithms and Dat...JSFestUA
During the presentation, we will consider what advantages a front-end developer will get from knowledge of algorithms and data structures.
We will analyze real-world examples where this knowledge simplified logic and accelerated applications dramatically.
And finally we will understand the most necessary things that will allow us to determine the effectiveness of the code and easily improve it.
2. Постановка задачи
Алгоритм сортировки — это алгоритм для упорядочивания элементов в
массиве.
8 3 4 0 2 1 7 6 9 5
0 1 2 3 4 5 6 7 8 9
3. Алгоритмы сортировки
Квадратичные алгоритмы:
• Сортировка пузырьком
• Сортировка выбором
• Сортировка вставками
Сложность этих алгоритмов (количество сравнений,
производимый во время работы программы, при самом
неудачном входном массиве) имеет порядок
2 n
Поэтому они называются квадратичными
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 операций обмена.
10. Сортировка вставками
Как и сортировка выбором, этот алгоритм совершает
сравнений.
n(n 1)
2
Алгоритм сортировки вставками может быть значительно
ускорен при работе с большими массивами, если вместо
обычного линейного поиска использовать бинарный