Метод сортировки числового ряда "шейкером" Вариант сортировки числового ряда (от малого к
великому ) методом шейкера. Считается более оптимизированным и быстрым алгоритмом сортировки по сравнению с сортировкой пузырьковым методом. Однако, есть тоже ряд отрицательных сторон (ну куда же без них). Подробно обо всём расскажет google, ну а ниже приведён код функции. Область применения так же достаточно широка.
Код 1C v 8.х
Функция СортировкаШейкеромРядаЧисел(МассивЭлементов) Экспорт
НижняяГраница = 0 ;
ВерхняяГраница = МассивЭлементов. Количество( ) - 1 ;
счётчик1 = МассивЭлементов. Количество( ) - 1 ;
счётчик2 = 0 ;
Пока НижняяГраница < ВерхняяГраница Цикл
Пока счётчик1 > = 0 Цикл
счётчик1 = счётчик1 - 1 ;
Если счётчик1 = 0 Тогда
Прервать ;
КонецЕсли ;
Если МассивЭлементов[счётчик1 - 1 ] > МассивЭлементов[счётчик1 ] Тогда
МладшийЭлемент = МассивЭлементов[счётчик1 ];
СтаршийЭлемент = МассивЭлементов[счётчик1 - 1 ];
МассивЭлементов[счётчик1 - 1 ] = МладшийЭлемент;
МассивЭлементов[счётчик1 ] = СтаршийЭлемент;
счётчик2 = счётчик1 ;
КонецЕсли ;
КонецЦикла ;
НижняяГраница = счётчик2 + 1 ;
счётчик1 = 0 ;
Пока счётчик1 < = ВерхняяГраница Цикл
счётчик1 = счётчик1 + 1 ;
Если счётчик1 = МассивЭлементов. Количество( ) Тогда
Прервать ;
КонецЕсли ;
Если МассивЭлементов[счётчик1 - 1 ] > МассивЭлементов[счётчик1 ] Тогда
МладшийЭлемент = МассивЭлементов[счётчик1 ];
СтаршийЭлемент = МассивЭлементов[счётчик1 - 1 ];
МассивЭлементов[счётчик1 - 1 ] = МладшийЭлемент;
МассивЭлементов[счётчик1 ] = СтаршийЭлемент;
счётчик2 = счётчик1 ;
КонецЕсли ;
КонецЦикла ;
ВерхняяГраница = счётчик2 - 1 ;
КонецЦикла ;
Возврат МассивЭлементов;
КонецФункции
Категория:
Полезные, Универсальные Функции