@Senseich

Как работает сортировка пузырьком?

Объясните, пожалуйста, как работает сортировка пузырьком? Смысл понятен, но хотелось бы подробно , шаг за шагом, что происходит в каждой строчке и в каждом цикле:
Вот такой код:
<?php

function bubble_sort(&$array)
{
    for ($i=0; $i < count($array); $i++)
    {
        for ($y=($i+1); $y < count($array); $y++)
        {
            if ($array[$i] > $array[$y])
            {
                $c = $array[$i];
                $array[$i] = $array[$y];
                $array[$y] = $c;
            }
        }
    }
}

$arr = array(92, 64, 87, 18, 17, 66, 50, 88, 99, 77);

bubble_sort($arr);

echo '<pre>';
print_r($arr);
echo '</pre>';

?>


P.S.: Прошу без сарказма, я понимаю, что это лёгкая задачка, но я только начинающий.
  • Вопрос задан
  • 1822 просмотра
Решения вопроса 1
@McBernar
Bubble sort — это когда ты циклом проходишь по массиву чисел и сравниваешь пары.
Если первое число больше второго — ты меняешь их местами и начинаешь сначала.

Таким образом за O(n2) операций ты сможешь выстроить всю цепочку.

В коде ровно это и написано — объявляются два цикла, в первом элемент массива стартует с 0, второй с 1, значения сравниваются и если первое больше второго — они меняются местами и массив перезаписывается. И так до тех пор, пока все цепочка не будет отсортирована от меньшего к большему.

Чудовищно долгая сортировка. Банальная бинарная сортировка значительно быстрее пузырька.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Stalker_RED
@Stalker_RED
15 Sorting Algorithms in 6 Minutes (пузырек на четвертой минуте)
Visualization and Comparison of Sorting Algorithms (пузырек слева внизу)

Подробная визуализация по шагам
На этом канале есть и другие виды сортировки.

Описание текстом
Ответ написан
Комментировать
dummyman
@dummyman
диссидент-схизматик
Пощупать разницу можно на демке:
math.hws.edu/eck/jsdemo/sortlab.html

Гдето была ссылка на тоже самое, только в 100х больше данных, и там загружал процессор на максимум возможностей, чтобы оценить какая сортировка в каком браузере быстрее. Не могу найти. Найду - прикручу сюда!
Ответ написан
Комментировать
Astrohas
@Astrohas
Python/Django Developer
Вот наиболее наглядный пример https://www.youtube.com/watch?v=lyZQPjUT5B4
Ответ написан
Комментировать
edtoken
@edtoken
Full-stack Javascript/Python Developer
Вот очень понятное объяснение на youtube вот
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы