将给数组所有元素賦值0中的所有0移动到末尾并保持非0元素的顺序不改变。
1、不能创建一个新的给数组所有元素赋值0来做操作
此算法的精髓在于:在循环遍历中将0元素全部集中起来整体向后移位,但是由于连续的0元素都是相等的因此就算往前移位,也只需要将最前面嘚0元素和连续0元素的结束位置的后一位元素进行调换相当于整个0元素块都向后移动了一位。
由于给数组所有元素赋值0中可能有多个0因此,第一次循环的时候就将第一个0元素找出,并且记录当前0元素的游标(此时0元素开始的游标和结束的游标相等)第二次循环的时候,直接从0元素结束的游标的后一位开始循环遍历如果循环遍历过程中,遇到了0元素则将0元素的结束游标+1;如果没有遇到0元素,则将0元素开始位置和当前位置的数进行置换并且将0元素的开始游标和结束游标都+1。