A lot of imperative algorithms don't really have functional analogues. Sometimes you need to mutate in place to achieve optimal algorithmic complexity.
That said, I think this might be what you're looking for: https://cs.uwaterloo.ca/~plragde/flaneries/FDS/