Найти в Дзене
VBA Excel с нуля

VBA Excel № 131. Сортировка массива пузырьковым методом.

Продолжим рассматривать сортировку массивов. Начало в статье № 130. Метод сортировки указан в названии статьи. Рассмотрим макрос "СортировкаПузырьковымМетодом" который представляет собой пример использования пузырьковой сортировки массива чисел. На макрос я назначил большую зелёную кнопку. Как это выглядит: Макрос запрашивает у пользователя количество элементов для создания случайного массива (я выбрал 10 тысяч элементов). Нажимаем Ок. Затрачено почти 4 секунды. Это много. Если помните в прошлой статье, массив в 1 миллион элементов сортировался всего за 8 секунд. Что за понятие такое - пузырьковая сортировка? Это один из довольно простых алгоритмов сортировки, который проходит по массиву многократно, сравнивая два соседних элемента и меняя их местами, если они находятся в неправильном порядке (меньшее число поднимается наверх, нижнее опускается, как пузырьки в воде). Этот процесс повторяется до тех пор, пока массив не будет отсортирован полностью. Утилита также состоит из двух процеду
Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Продолжим рассматривать сортировку массивов. Начало в статье № 130. Метод сортировки указан в названии статьи. Рассмотрим макрос "СортировкаПузырьковымМетодом" который представляет собой пример использования пузырьковой сортировки массива чисел.

На макрос я назначил большую зелёную кнопку. Как это выглядит:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Макрос запрашивает у пользователя количество элементов для создания случайного массива (я выбрал 10 тысяч элементов). Нажимаем Ок.

  • Генерируется массив случайных чисел.
  • Происходит сортировка этого массива методом пузырьковой сортировки.
  • Отсортированный массив записывается в столбец A на листе.
  • Выводится сообщение с информацией о времени, затраченном на сортировку массива.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Затрачено почти 4 секунды. Это много. Если помните в прошлой статье, массив в 1 миллион элементов сортировался всего за 8 секунд.

Что за понятие такое - пузырьковая сортировка?

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

Утилита также состоит из двух процедур. Итак:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

📌 Скачать файл пример с макросом можно в конце статьи

Коротко как это работает в коде.

  • Массив случайных чисел генерируется и передается в процедуру "ПузырьковаяСортировка".
  • В процедуре "ПузырьковаяСортировка" происходит сравнение каждой пары элементов массива и их перестановка, чтобы они были упорядочены по возрастанию.
  • Этот процесс повторяется до тех пор, пока весь массив не будет отсортирован.

Зачем вообще нужна пузырьковая сортировка?

Во-первых, это является простым алгоритмом, который нетрудно реализовать и понять. Во-вторых, код может быть полезен для сортировки небольших массивов данных (на которых кстати макрос работает достаточно шустро), когда нет необходимости в эффективности работы алгоритма.

Однако, для больших объемов данных этот метод неэффективен и может потребовать значительного времени выполнения (для более 10 тысяч элементов).

Кстати если вы в Inputbox введете не число, то получится:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

А что будет если введёте отрицательное число или нажмёте кнопку "Отмена"?

СКАЧАТЬ ФАЙЛ ПРИМЕР