Cool, as a further research, I think it may be good for GPU/SIMD. Because as a human you quickly see where is the boundary between groups, where to split. But our eyes are parallel to some degree, while computer needs to scan items one-by-one to find the boundary. But GPU is faster may do it in one call.<p>Glancing at the code it has three nested loops (two "while"s, and one "reverse" call), which makes it O(N^3) before optimizations.