Метод сортировки числового ряда "шейкером" Вариант сортировки числового ряда (от малого к великому) методом шейкера. Считается более оптимизированным и быстрым алгоритмом сортировки по сравнению с сортировкой пузырьковым методом. Однако, есть тоже ряд отрицательных сторон (ну куда же без них). Подробно обо всём расскажет 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] = СтаршийЭлемент;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат МассивЭлементов;
КонецФункции
Категория:
Полезные, Универсальные Функции