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