Проблема голландского национального флага - это особый случай более общей проблемы сортировки, где единственными допустимыми элементами являются 0, 1 и 2. Вы можете абсолютно решить это, используя стандартный алгоритм сортировки.
Проблема сама по себе частично интересна по историческим причинам, но в значительной степени потому, что сложно найти решения, стабильные, эффективные по времени (O (n)) и эффективные по площади (O (1)). Легко получить решения с двумя из этих трех свойств, но получение всех трех (я считаю) открытая проблема. Это также интересно как место для разработки алгоритмов быстрого сортировки и разбиения на дубликаты ключей; вы можете думать, что 0, 1 и 2 меньше, чем ось вращения, равная оси вращения, и больше, чем ось поворота, и вы в основном имеете быструю сортировку с повторяющимися элементами.
Надеюсь, это поможет!
Для меня интересно то, что существует решение O (n) на месте. (Правда, он нестабилен, но на месте O (n) недоступен для «стандартной сортировки») – rici
yep, ответ выше полностью пропустил линейное решение времени .... –
@ gen-ys Извините, я должен сделали мой ответ более ясным. В моем втором абзаце я надеялся сообщить, что из O (n) -time, O (1) -пространства и стабильны, у нас есть алгоритмы для любых двух из трех свойств, но не все три одновременно. Я попробую обновить ответ, чтобы сделать это более ясным. – templatetypedef