Напишите программу, которая перемещает все нулевые элементы в конец массива, сохраняя порядок ненулевых элементов

  • 68
Напишите программу, которая перемещает все нулевые элементы в конец массива, сохраняя порядок ненулевых элементов в начале массива. Входные данные: В первой строке указывается размер массива N. Во второй строке через пробел задаются N чисел - элементы массива. Гарантируется, что N больше нуля и не превышает 10000. Выходные данные: Программа должна вывести все элементы получившегося массива в одной строке, разделенные пробелами. Примеры: Входные данные: 6 1 0 2 0 3 4 Выходные данные: 1 2 3 4
Tayson
69
Хорошо, чтобы решить эту задачу, мы можем использовать следующий алгоритм:

1. Создаем новый пустой массив, в котором мы будем хранить значения.
2. Проходим по исходному массиву и добавляем все ненулевые элементы в новый массив в том же порядке.
3. Запоминаем количество нулевых элементов.
4. Затем добавляем необходимое количество нулевых элементов в конец нового массива.
5. Выводим новый массив, разделяя элементы пробелами.

Давайте напишем код на Python, который реализует этот алгоритм:

python
N = int(input("Введите размер массива: "))
numbers = list(map(int, input("Введите числа через пробел: ").split()))

# Создаем новый пустой массив
new_numbers = []

# Проходим по исходному массиву
for num in numbers:
# Добавляем ненулевые элементы в новый массив
if num != 0:
new_numbers.append(num)

# Запоминаем количество нулевых элементов
zero_count = numbers.count(0)

# Добавляем необходимое количество нулевых элементов в конец нового массива
new_numbers.extend([0] * zero_count)

# Выводим новый массив
for i in range(len(new_numbers)):
print(new_numbers[i], end=" ")


Теперь, если мы запустим эту программу и введем входные данные "6" и "1 0 2 0 3 4", то получим выходные данные "1 2 3 4 0 0". Это означает, что все нулевые элементы были перемещены в конец массива, сохраняя при этом порядок ненулевых элементов в начале массива.