UniLecs #Task. Sort colors
Задача: дан массив из объектов красного, белого и синего цвета. Необходимо отсортировать их так, чтобы одинаковые цвета располагались рядом. Порядок следующий: сначала должны следовать красные, затем белые и в конце синие объекты. Числа 0, 1, 2 обозначают красный, белый и синий цвет.
Примечание: запрещено пользоваться встроенной функцией сортировки. Решение задачи должно быть линейным.
Входные данные: arr — массив с числами 0, 1, 2. Размер массива от 1 до 10⁵.
Вывод: исходный отсортированный массив
Пример: arr = [ 2, 2, 0, 1, 1, 0 ]
Output: [ 0, 0, 1, 1, 2, 2 ]
Разбор
Воспользуемся методом сортировки подсчетом. Т.е. в 3х различных переменных подсчитаем кол-во соот.цветов. Зная кол-во объектов каждого цвета изменим их положение в исходном массиве.
Детали реализации смотрите ниже!
Реализация
https://gist.github.com/unilecs/d1a12f04a15dd505f28cbe69e2f3169d