Рассмотрим следующую проблему.
Нам дан массив элементов, принадлежащих одному из двух классов: либо красному, либо синему. Мы должны переставить элементы массива так, чтобы все синие элементы были первыми (а все красные элементы следовали). Перестановка должна быть выполнена стабильно, то есть необходимо сохранить относительный порядок синих элементов (то же самое для красных).
Есть ли умный алгоритм, который бы выполнял вышеуказанную перестановку на месте?
Решение не на месте, конечно, просто.
Очевидным решением на месте было бы применить любой устойчивый алгоритм сортировки к массиву. Однако использование полноценного алгоритма сортировки в массиве интуитивно кажется избыточным, особенно учитывая тот факт, что мы имеем дело только с двумя классами элементов.
Любые идеи с благодарностью.