ВУЗы и колледжи
Сортировка методом пузырька в VBA
Здравствуйте, подскажите программу, которая сортировала бы рандомные числа методом пузырька в VBA Excel
Метод Пузырька или пузырьковая сортировка
наиболее простой и не очень быстрый метод. Есть смысл использовать его для небольших массивов и в учебных целях.
Его суть: сравнить два соседних элемента массива и если они расположены не в «нужном» порядке, то поменять их местами.
Вот условие сортировки по возрастанию:
If a(i) > a(i + 1) Then swap i, i + 1, bool
А вот по убыванию:
If a(i) < a(i + 1) Then swap i, i + 1, bool
Показал и все. В дальнейшем сортирую только по возрастанию. Для удобства восприятия
Как видите, если соседние элементы равны или не удовлетворяют условию замены, то просто ничего не происходит, а элементы остаются на своих местах.
Следующий момент: соседние элементы, конечно, рассматриваются и сравниваются парами в цикле. Но можно цикл начать от начала массива (прямой прогон), а можно с конца (обратный прогон).
Вот, прямой прогон:
For i = 1 To sizeArr -1 'прямой ход.
If a(i) > a(i + 1) Then swap i, i + 1, bool
Next i
А вот, обратный прогон:
For i = sizeArr To 2 Step -1 'обратный ход.
If a(i) < a(i - 1) Then swap i, i - 1, bool
Next i
более подробно тут (есть ссылка на xls-файл):
https://orenstudent.ru/AboutSort.htm
наиболее простой и не очень быстрый метод. Есть смысл использовать его для небольших массивов и в учебных целях.
Его суть: сравнить два соседних элемента массива и если они расположены не в «нужном» порядке, то поменять их местами.
Вот условие сортировки по возрастанию:
If a(i) > a(i + 1) Then swap i, i + 1, bool
А вот по убыванию:
If a(i) < a(i + 1) Then swap i, i + 1, bool
Показал и все. В дальнейшем сортирую только по возрастанию. Для удобства восприятия
Как видите, если соседние элементы равны или не удовлетворяют условию замены, то просто ничего не происходит, а элементы остаются на своих местах.
Следующий момент: соседние элементы, конечно, рассматриваются и сравниваются парами в цикле. Но можно цикл начать от начала массива (прямой прогон), а можно с конца (обратный прогон).
Вот, прямой прогон:
For i = 1 To sizeArr -1 'прямой ход.
If a(i) > a(i + 1) Then swap i, i + 1, bool
Next i
А вот, обратный прогон:
For i = sizeArr To 2 Step -1 'обратный ход.
If a(i) < a(i - 1) Then swap i, i - 1, bool
Next i
более подробно тут (есть ссылка на xls-файл):
https://orenstudent.ru/AboutSort.htm
Напиши, блин. "Пузырёк" - самая простая из сортировок, какую только можно придумать !
Похожие вопросы
- Определитель матрицы в VBA
- vba информатика
- Инфоматика, excel, VBA
- Метод Ромберга Численные методы
- Высшая математика.МЕТОД ГАУССА! ОЧЕНЬ НУЖНА ПОМОЩЬ!
- Метод Гаусса
- Метод наименьших квадратов...
- Как найти собственные значения уравнения параболического типа (теплопроводности), решая методом разделения переменных?
- Когда вода в кастрюле начинает кипеть, то на дне кастрюли образуются пузырьки, которые поднимаются к верху. Откуда они?
- Дописать уравнение и расставить в нем коэфициенты методом полуреакции и методом электронного баланса: