取出数组中为0的数,放到最后,并不改变其他数字顺序
时间: 2024-09-20 13:14:39 浏览: 36
JS 在指定数组中随机取出N个不重复的数据
这是一个常见的数组操作问题,通常在处理数据结构时遇到。如果你想要从一个数组中找出所有0元素,并将它们移动到数组的末尾,同时保持其他非零元素的原始顺序,你可以采用以下步骤:
1. **遍历数组**:创建两个指针,一个`start`指向数组开始位置,另一个`end`指向数组结束位置。
2. **查找0元素**:从`start`开始,如果当前元素是0,那么将它与`end`指向的元素交换,然后`end`向后移一位。
3. **更新指针**:每次找到一个非零元素,就让`start`向前移动一位。当`start`到达`end`时,所有的0元素都已经移到了后面,`start`现在指向最后一个非零元素。
4. **将剩余元素放回原处**:从`end`开始,将每个元素复制回原来的位置,直到`start`。
以下是伪代码表示这个过程:
```python
def move_zeros(arr):
start = 0
end = len(arr) - 1
while start < end and arr[start] == 0:
arr[start], arr[end] = arr[end], arr[start]
end -= 1
for i in range(start, end + 1):
arr[i] = arr[start + (i - start)]
# 示例
arr = [0, 1, 0, 3, 12, 0, 5, 6]
move_zeros(arr)
print(arr) # 输出:[1, 3, 12, 5, 6, 0, 0, 0]
```
阅读全文