Метод сортировки числового ряда "шейкером" Вариант сортировки числового ряда (от малого к великому) методом шейкера. Считается более оптимизированным и быстрым алгоритмом сортировки по сравнению с сортировкой пузырьковым методом. Однако, есть тоже ряд отрицательных сторон (ну куда же без них). Подробно обо всём расскажет 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 ;
КонецЦикла ;
Возврат МассивЭлементов;
КонецФункции
Категория:
Полезные, Универсальные Функции Метод сортировки числового ряда "пузырьком" Функция осуществляет сортировку числового ряда (в массиве) от малого к большему http://ru.wikipedia.org/wiki/Сортировка_пузырьком методом "пузырька"[/url] Область применения достаточно широка.
Код 1C v 8.х
Функция СортировкаПузырьком(МассивЭлементов) Экспорт
Для просмотр = 0 По МассивЭлементов. Количество( ) - 1 Цикл
Для индекс = 0 По МассивЭлементов. Количество( ) - 1 Цикл
Если индекс = МассивЭлементов. Количество( ) - 1 Тогда
Прервать ;
КонецЕсли ;
Если МассивЭлементов[индекс] > МассивЭлементов[индекс+ 1 ] Тогда
СтаршийЭлемент = МассивЭлементов[индекс];
МладшийЭлемент = МассивЭлементов[индекс+ 1 ];
МассивЭлементов[индекс] = МладшийЭлемент;
МассивЭлементов[индекс+ 1 ] = СтаршийЭлемент;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
Возврат МассивЭлементов;
КонецФункции
Категория:
Полезные, Универсальные Функции