Сделать "запись" процесса сортировки при помощи паттерна команды
gameprogrammingpatterns.com/command.html
сложить команды в стек,
проигрывать команды по таймауту
фактичсески там будет что-то типа
queue = [MoveCommand(1,3), MoveCommand(2,3), MoveCommand(3,1)]
а в команде уже передвигать элементы массива, и запускать перерисовку.