Сортировка пузырьком

Сортировку пузырьком (Bubble Sort) также иногда называют сортировкой простыми обменами.
Он берет два первых элемента массива, сравнивает их и расставляет по порядку. Затем происходит смещение на один элемент вправо и сравниваются уже второй и третий элементы. И так далее до конца массива.


Легко догадаться, что в результате таких манипуляций самое больше число окажется в конце массива. Оно всплывет, как пузырек в воде, отсюда и название сортировки.


Пример кода:
            const bubbleSort = arr => {

            for (let i = 0, endI = arr.length - 1; i < endI; i++) {
                let wasSwap = false;

                for (let j = 0, endJ = endI - i; j < endJ; j++) {
                    if (arr[j] > arr[j + 1]) {
                        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
                        wasSwap = true;
                    }
                }

                if (!wasSwap) break;
            }

            return arr;
        };

Сложность

Пузырьковая сортировка является устойчивой, а ее временная сложность составляет O(N²) в худшем случае. Это означает, что для массива с n элементами нужно совершить n2 операций: для каждого из элементов приходится сделать проход по всем остальным элементам массива. Реальное значение чуть меньше чем n2 , но при расчете сложности алгоритма все коэффициенты отбрасываются. В лучшем случае, если массив уже отсортирован, потребуется всего n операций.
Если у вас возникли трудности с понимаем работы алгоритма, можно посмотреть его визуализацию на видео: