---
description: Сортировке упорядочены и идут от "лучшей" к "худшей"
---

# Сортировка

## Быстрая сортировка

**Время выполнения nlogn.**

В быстрой сортировке необходимо определить базовый случай (например при сортировке массива по возрастанию это массив с одним элементом).&#x20;

Так же необходим опорный элемент, это тот элемент, с которого начнётся сравнение.

Пример js:

```javascript
function quickSort(array) {
    if (array.length) < 2 return array; // Базовый случай
    
    const pivot = array[0]; // Опорный элемент
    const less = array.filter(element => {
       return element <= pivot;
    });
    const greater = array.filter(element => {
       return element > pivot;
    });
   return quickSort(less) + [pivot] + quickSort(greater);
}   
```

Визуализация сортировки:

{% embed url="https://www.youtube.com/watch?v=MZaf_9IZCrc" %}
Быстрая сортировка
{% endembed %}



## Сортировка слиянием

**Время выполнения nlogn.**

Хорошая статья [здесь](https://medium.com/@alivander/%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC-javascript-1c0b0e8ff737).

## Сортировка выбором

**Время выполнения n^2.**

Алгоритм: Проходим по искомому набору, добавляем в новый набор элемент с заданным условием, после прохождения всего искомого набора, удаляем элемент, который был добавлен.

Хорошая статья [здесь](https://medium.com/@alivander/%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%BE%D0%BC-javascript-a5610af309c8).

## Сортировка "Пузырьком"

**Время выполнения n^2.**

Алгоритм: проходим по каждому элементу, сравнивая текущий со следующим, если выполняет условие, то меняем их местами. В итоге самый большой будет в конце и при последующем обходе его можно не учитывать. Цикл повторяем длинна массива - 1 раз.

Хорошая статья [здесь](https://medium.com/@alivander/%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC-javascript-54462b2989a6).
