C/C++.
Преобразовать массив так, чтобы сначала шли нулевые элементы, а затем все остальные.

7 Авг 2019 в 19:43
380 +1
0
Ответы
1

Для реализации данной задачи можно использовать два указателя – один указывает на начало массива, а второй перемещается вперед. Когда второй указатель находит ненулевой элемент, он меняет местами его со значением, на которое указывает первый указатель, после чего оба указателя сдвигаются на одну позицию вперед.

Вот пример кода на C/C++, который выполняет данное преобразование:

#include <iostream>
void moveZeroes(int* nums, int numsSize) {
int zeroIndex = 0;
for (int i = 0; i < numsSize; i++) {
if (nums[i] == 0) {
// Смена местами нулевого элемента и элемента, на который указывает zeroIndex
int temp = nums[zeroIndex];
nums[zeroIndex] = nums[i];
nums[i] = temp;
zeroIndex++;
}
}
}
int main() {
int arr[] = {0, 1, 0, 3, 12};
int n = sizeof(arr) / sizeof(arr[0]);
moveZeroes(arr, n);
std::cout << "Преобразованный массив: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
return 0;
}

Этот код работает следующим образом: он проходит по массиву, и когда находит ненулевой элемент, меняет его местами с нулевым элементом, на который указывает zeroIndex. Нулевой элемент и non-zero элемент меняются местами, после чего zeroIndex увеличивается на 1. Таким образом, все нулевые элементы будут находиться в начале массива.

20 Апр в 15:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир