Отсортировать данный массив таким образом, чтобы все нули находились в начале, а единицы - в конце массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Элементами массива IM(N) являются числа 0 и 1. Отсортировать этот массив таким образом, чтобы все нули находились в начале, а единицы - в конце массива. Дополнительный массив не заводить. Помогите пожалуйста!

Решение задачи: «Отсортировать данный массив таким образом, чтобы все нули находились в начале, а единицы - в конце массива»

textual
Листинг программы
void foo (int *beg, int *end)
{
    while (beg != end)
    {
        if (*beg == 1)
        {
            *end += *beg;
            *beg = *end - *beg;
            *end -= *beg;
            --end; --beg;
        }
        ++beg;
    }
}

Объяснение кода листинга программы

В данном коде реализован алгоритм сортировки, который переставляет нули и единицы в заданном массиве таким образом, чтобы все нули находились в начале, а единицы - в конце.

  1. Входные данные:
    • beg: указатель на первый элемент массива (начало).
    • end: указатель на последний элемент массива (конец).
  2. Тело цикла while:
    • Проверка условия: beg != end, то есть пока beg не станет равным end (то есть пока мы не достигнем конца массива).
    • Если значение первого элемента массива равно 1:
      • Перемещение значения первого элемента в конец массива: end += beg.
      • Перемещение значения первого элемента в начало массива: beg = end - *beg.
      • Перемещение значения первого элемента обратно в конец массива: end -= beg.
      • Увеличение указателя на первый элемент массива: ++beg.
      • Уменьшение указателя на последний элемент массива: --end.
  3. После выполнения всех операций цикла, получившийся массив будет иметь следующий вид: сначала все нули, затем все единицы. Пример вызова функции: int arr[] = {1, 0, 1, 0, 1, 0, 1, 0, 1, 0}; int beg = arr; int end = arr + sizeof(arr) / sizeof(arr[0]) - 1; foo(beg, end); В результате выполнения данного кода, массив arr будет иметь следующий вид: {0, 0, 0, 1, 1, 1, 1, 1, 0, 0}.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы