UniLecs #Task. Sort colors

Albert Davletov
UniLecs
Published in
1 min readApr 6, 2020

Задача: дан массив из объектов красного, белого и синего цвета. Необходимо отсортировать их так, чтобы одинаковые цвета располагались рядом. Порядок следующий: сначала должны следовать красные, затем белые и в конце синие объекты. Числа 0, 1, 2 обозначают красный, белый и синий цвет.

Примечание: запрещено пользоваться встроенной функцией сортировки. Решение задачи должно быть линейным.

Входные данные: arr — массив с числами 0, 1, 2. Размер массива от 1 до 10⁵.

Вывод: исходный отсортированный массив

Пример: arr = [ 2, 2, 0, 1, 1, 0 ]
Output: [ 0, 0, 1, 1, 2, 2 ]

Разбор

Воспользуемся методом сортировки подсчетом. Т.е. в 3х различных переменных подсчитаем кол-во соот.цветов. Зная кол-во объектов каждого цвета изменим их положение в исходном массиве.
Детали реализации смотрите ниже!

Реализация

C#

https://gist.github.com/unilecs/d1a12f04a15dd505f28cbe69e2f3169d

Play-test

https://dotnetfiddle.net/PYi2M7

--

--