2.4 KiB
2.4 KiB
#алгоритмы #сортировка
Лучшая/Средняя эффективность O(n) = O(n*log_2{n})
Худшая эффективность O(n) = O(n^2)
Быстрая сортировка относится к алгоритмам сортировки. Она работает намного быстрее сортировки выбором и часто применяется в реальных программах. Основана на стратегии «Разделяй и властвуй (Divide and conquer)».
Последовательность:
- Выбрать опорный элемент
- Разделить массив на два подмассива: элементы, меньшие опорного, и элементы, большие опорного.
- Рекурсивно применить быструю сортировку к двум подмассивам.
Быстродействие быстрой сортировки сильно зависит от выбора опорного
элемента. Предположим, опорным всегда выбирается первый элемент, а быстрая
сортировка применяется к уже отсортированному массиву. Быстрая
сортировка не проверяет, отсортирован входной массив или нет, и все равно
пытается его отсортировать.
В худшем случае существуют O(n) уровней, поэтому алгоритм займет время
O(n) * O(n)=O(n^2)
function quickSort(array) {
if (array.length <= 1) {
return array;
}
const middleIndex = Math.ceil(array.length / 2);
const left = [];
const right = [];
for (let i = 0; i < array.length; i++) {
if (i === middleIndex) {
continue
}
if (array[i] < array[middleIndex]) {
left.push(array[i])
} else {
right.push(array[i])
}
}
return [
...quickSort(left),
array[middleIndex],
...quickSort(right),
]
}
Источники:

