定义一个包含若干个数字0的整数数组,编程将其中的0全部换到数组的最后,原有其他数据的顺序不变。 如int a[7]{1, 0, 2, 0, 3, 4, 5},则处理后变成{1, 2, 3,
时间: 2024-12-29 11:30:05 浏览: 3
你可以使用双指针法来解决这个问题。首先创建两个指针,一个初始化为数组的起始位置(0),另一个为结束位置(数组长度减一)。然后遍历数组,当遇到非零元素时,将其移动到结束位置,并将结束位置向左移动一位;遇到零元素时,只需更新结束位置即可。遍历结束后,所有非零元素都在前面,零元素自然就移到了最后。
下面是一个简单的C++示例:
```cpp
#include <iostream>
void moveZerosToEnd(int arr[], int size) {
int i = 0, end = 0;
while (i < size && arr[i] != 0) { // 遇到非零元素
arr[end++] = arr[i]; // 移动到数组末尾
i++;
}
while (end < size) { // 将剩余的零元素移动到末尾
arr[end++] = 0;
}
}
// 测试代码
int main() {
int a[] = {1, 0, 2, 0, 3, 4, 5};
int n = sizeof(a) / sizeof(a[0]);
moveZerosToEnd(a, n);
for (int i = 0; i < n; i++) {
std::cout << a[i] << " ";
}
return 0;
}
```
运行上述程序,输出将是`1 2 3 0 0 0 5`。
阅读全文