boolean array[n]; // The arrayint lastTrue = n;for (int i = n-1; i >= 0; --i) { if (array[i]) { swap(array[--lastTrue], array[i]); }}每次迭代之后
lastTrue,所有元素都为真。没有交换任何两个true元素,因为如果在它们之间存在一个true元素
i,
lastTrue它将已经被遇到并移到后面
lastTrue。
O(n)时间和
O(1)内存都在运行。



