Сортировка массивов в 1С

 

О различных способах сортировки массивов в 1С наверняка написано уже немало статей. Я решил написать еще одну.

Здесь я не буду расписывать все существующие методы сортировки массивов, которых достаточно много, а просто покажу и сравню два основных, на мой взгляд метода — пузырьковый (тот, который в школах/университетах изучают) и быстрый (самый оптимальный, на мой взгляд).

Итак, вот небольшая функция, которая создает массив заданного размера:

Отсортируем полученный массив пузырьковым алгоритмом:

Теперь отсортируем быстрым алгоритмом:

Теперь перейдем к результатам — массив из 1000 элементов:

Сортировка массивов в 1С (1000 элементов)
Сортировка массивов в 1С (1000 элементов)

10000 элементов:

Сортировка массивов в 1С (10000 элементов)
Сортировка массивов в 1С (10000 элементов)

Результаты, я думаю, говорят сами за себя: при увеличении количества элементов массива в 10 раз, время сортировки быстрым алгоритмом также увеличилось приблизительно в 10 раз, в том время как время сортировки пузырьковым алгоритмом увеличилось приблизительно в 100 раз.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (Пока оценок нет)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Комментариев: 4
  1. Дмитрий

    100000 элементов:

    Процедура СортировкаЧерезТЗ(Кнопка)

    массив = ПолучитьМассивЭлементов();

    тДатаНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();

    тз = Новый ТаблицаЗначений;
    тз.Колонки.Добавить(«Цифра», Новый ОписаниеТипов(«Число»));
    Для тСчет = 0 По фЧислоЭлементов-1 Цикл //фЧислоЭлементов — это поле на форме
    нСтрока = тз.Добавить();
    нСтрока.Цифра = Массив[тСчет];
    КонецЦикла;

    тз.Сортировать(«Цифра»);
    массив = тз.ВыгрузитьКолонку(«Цифра»);

    тДатаОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
    Сообщить(«Время работы (тз): «+(тДатаОкончания-тДатаНачала)+» мс.»);

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

    Время работы (тз): 1 906 мс.
    Время работы (быстрая): 42 734 мс.

  2. Ростислав

    Нда…

    1 000 000 (миллион) записей

    СписокЗначений = Новый СписокЗначений;
    СписокЗначений.ЗагрузитьЗначения(Массив);
    СписокЗначений.СортироватьПоЗначению();

    Возврат СписокЗначений.ВыгрузитьЗначения();

    Время работы: ~ 3,26 сек
    Время работы (ТЗ): ~ 53,27 сек
    Время работы (быстрая): даже не замерял

  3. Николай

    Полезная публикация, спасибо!

  4. андрей

    СписокЗначений.СортироватьПоЗначению(); это оч тормозная хрень у меня пара тысяч
    элементов сортирует 16 сек

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: