Печать
Родительская категория: Статьи
Категория: 1C

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

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

Например у нас есть массив:

4 23 6 2 12 100 9

Нам нужно получить отсортированный массив:

2 4 6 9 12 23 100

Метод реализован на множестве языков программирования. В данном случае предлагаю вариант пузырьковой сортировки на встроенном языке системы 1С:

 

Процедура КомандаВыполнить(Команда)
Перем i; // Объявляем переменную i - это индекс элементов массива
Перем j; // Объявляем переменную j - это количесто "просмотров" массива, равно количеству элементов
j=0; // начальное значение переменной 0, с каждым циклом увеличиваеся на 1

Массив = Новый массив (7); // Создаем массив из 7 элементов
Массив [0] = 4; // Перечисляем значения элементов массива
Массив [1] = 23;
Массив [2] = 6;
Массив [3] = 2;
Массив [4] = 12;
Массив [5] = 100;
Массив [6] = 9;

Для j = 0 По Массив.ВГраница() Цикл // Цикл для "просмотров" массива, повторяется столько раз, сколько элементов в массиве

Для i = 0 По Массив.ВГраница()- 1 Цикл // Цикл проверки массива на сравнение 2х соседних элементов

Если Массив[i] > Массив[i + 1] Тогда // Проверка соседних элементов массива и замена их местами
Замена = Массив[i];
Массив[i] = Массив[i + 1];
Массив[i + 1] = Замена;
КонецЕсли;
КонецЦикла;

КонецЦикла;


Для Каждого ЭлементМассива из Массив Цикл // Вывод отсортированного массива
Сообщить(ЭлементМассива);
КонецЦикла;


КонецПроцедуры

Так же есть множество других способов сортировки: шейкерная сортировка, быстрая сортировка, пирамидальная сортировка и т.д.