Move Zeroes — one write pointer
Scan with i. Every non-zero value is swapped down to slot j, the next spot reserved for non-zeros.
Try:
settled non-zero swapped this step zero