Рубрики

Переместите все отрицательные элементы в конец в порядке с дополнительным пространством

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

Примеры:

Input : arr[] = {1, -1, 3, 2, -7, -5, 11, 6 }
Output : 1  3  2  11  6  -1  -7  -5 

Input : arr[] = {-5, 7, -3, -4, 9, 10, -1, 11}
Output : 7  9  10  11  -5  -3  -4  -1  

Мы обсудили различные подходы к этой проблеме в следующем посте.

Переставьте положительные и отрицательные числа с постоянным лишним пробелом

Проблема становится проще, если нам разрешено использовать дополнительное пространство. Идея в том, чтобы создать пустой массив (temp []). Сначала мы храним все положительные элементы данного массива, а затем мы храним все отрицательные элементы массива в Temp []. Наконец, мы копируем temp [] в исходный массив.

Ниже приведена реализация вышеуказанной идеи:

C / C ++

// Программа на C ++ для перемещения всех элементов -ve в конец
// Без изменения порядка элемента массива
#include<bits/stdc++.h>

using namespace std;

  
// Перемещает все элементы -ve в конец массива в
// в том же порядке.

void segregateElements(int arr[], int n)

{

    // Создать пустой массив для хранения результата

    int temp[n];

  

    // Массив обхода и элемент store + ve в

    // временный массив

    int j = 0; // индекс температуры

    for (int i = 0; i < n ; i++)

        if (arr[i] >= 0 )

            temp[j++] = arr[i];

  

    // Если массив содержит все положительные или все отрицательные.

    if (j == n || j == 0)

        return;

  

    // Сохраняем элемент -ve во временном массиве

    for (int i = 0 ; i < n ; i++)

        if (arr[i] < 0)

            temp[j++] = arr[i];

  

    // Копируем содержимое temp [] в arr []

    memcpy(arr, temp, sizeof(temp));

}

  
// Драйвер программы

int main()

{

    int arr[] = {1 ,-1 ,-3 , -2, 7, 5, 11, 6 };

    int n = sizeof(arr)/sizeof(arr[0]);

  

    segregateElements(arr, n);

  

    for (int i = 0; i < n; i++)

       cout << arr[i] << " ";

  

    return 0;

}

Джава

// Java программа для перемещения всех элементов в конец
// Без изменения порядка элемента массива

import java.util.Arrays;

  

class GFG {

      

    // Перемещает все элементы -ve в конец массива в

    // в том же порядке.

    static void segregateElements(int arr[], int n)

    {

          

        // Создать пустой массив для хранения результата

        int temp[] = new int[n];

  

        // Массив обхода и элемент store + ve в

        // временный массив

        int j = 0; // индекс температуры

          

        for (int i = 0; i < n; i++)

            if (arr[i] >= 0)

                temp[j++] = arr[i];

  

        // Если массив содержит все положительные или все

        // отрицательно.

        if (j == n || j == 0)

            return;

  

        // Сохраняем элемент -ve во временном массиве

        for (int i = 0; i < n; i++)

            if (arr[i] < 0)

                temp[j++] = arr[i];

  

        // Копируем содержимое temp [] в arr []

        for (int i = 0; i < n; i++)

            arr[i] = temp[i];

    }

      

    // Код драйвера

    public static void main(String arg[])

    {

        int arr[] = { 1, -1, -3, -2, 7, 5, 11, 6 };

        int n = arr.length;

  

        segregateElements(arr, n);

  

        for (int i = 0; i < n; i++)

            System.out.print(arr[i] + " ");

    }

}

  
// Этот код предоставлен Anant Agarwal.

питон

# Программа Python для перемещения всех элементов в конец
# Без изменения порядка элемента массива

   
# Перемещает все элементы -ve в конец массива в
# тот же порядок.

def segregateElements(arr, n):

    # Создать пустой массив для хранения результата

    temp = [0 for k in range(n)]

   

    # Массив обхода и элемент store + ve в

    # временный массив

    j = 0 # индекс температуры

    for i in range(n):

        if (arr[i] >= 0 ):

            temp[j] = arr[i]

            j +=1

   

    # Если массив содержит все положительные или все отрицательные.

    if (j == n or j == 0):

        return

   

    # Хранить -ve элемент в временном массиве

    for i in range(n):

        if (arr[i] < 0):

            temp[j] = arr[i]

            j +=1

   

    # Копировать содержимое temp [] в arr []

    for k in range(n):

        arr[k] = temp[k]

  
# Драйверная программа

arr = [1 ,-1 ,-3 , -2, 7, 5, 11, 6 ]

n = len(arr)

  
segregateElements(arr, n);

   

for i in range(n):

    print arr[i],

  
# Предоставлено Афзал ака Саан

C #

// C # программа для перемещения всех элементов в конец
// Без изменения порядка элемента массива

using System;

  

class GFG {

  

    // Перемещает все элементы -ve в

    // конец массива в том же порядке.

    static void segregateElements(int[] arr, int n)

    {

        // Создать пустой массив для хранения результата

        int[] temp = new int[n];

  

        // Массив обхода и элемент store + ve в

        // временный массив

        int j = 0; // индекс температуры

  

        for (int i = 0; i < n; i++)

            if (arr[i] >= 0)

                temp[j++] = arr[i];

  

        // Если массив содержит все положительные или все

        // отрицательно.

        if (j == n || j == 0)

            return;

  

        // Сохраняем элемент -ve во временном массиве

        for (int i = 0; i < n; i++)

            if (arr[i] < 0)

                temp[j++] = arr[i];

  

        // Копируем содержимое temp [] в arr []

        for (int i = 0; i < n; i++)

            arr[i] = temp[i];

    }

  

    // Код драйвера

    public static void Main()

    {

        int[] arr = { 1, -1, -3, -2, 7, 5, 11, 6 };

        int n = arr.Length;

        segregateElements(arr, n);

  

        for (int i = 0; i < n; i++)

            Console.Write(arr[i] + " ");

    }

}

  
// Этот код предоставлен vt_m.

PHP

<?php 
// PHP программа для перемещения всех элементов в конец
// Без изменения порядка элемента массива

  
// Перемещает все элементы -ve в конец
// массив в том же порядке.

function segregateElements(&$arr, $n)

{

    // Создать пустой массив для хранения результата

    $temp = array(0, $n, NULL);

  

    // Массив обхода и store + ve

    // элемент во временном массиве

    $j = 0; // индекс температуры

    for ($i = 0; $i < $n ; $i++)

        if ($arr[$i] >= 0 )

            $temp[$j++] = $arr[$i];

  

    // Если массив содержит все положительные

    // или все отрицательные.

    if ($j == $n || $j == 0)

        return;

  

    // Сохраняем элемент -ve во временном массиве

    for ($i = 0 ; $i < $n ; $i++)

        if ($arr[$i] < 0)

            $temp[$j++] = $arr[$i];

  

    // Копируем содержимое temp [] в arr []

    for($i = 0; $i < $n; $i++)

        $arr[$i] = $temp[$i];

}

  
// Код драйвера

$arr = array(1 ,-1 ,-3 , -2, 7, 5, 11, 6 );

$n = sizeof($arr);

  

segregateElements($arr, $n);

  

for ($i = 0; $i < $n; $i++)

echo $arr[$i] ." ";

  
// Этот код добавлен
// ChitraNayal
?>


Выход:

1 7 5 11 6 -1 -3 -2 

Сложность времени: O (n)
Вспомогательное пространство: O (n)

Статьи по Теме:
Переставьте положительные и отрицательные числа с постоянным лишним пробелом
Переставьте положительные и отрицательные числа в O (n) время и O (1) дополнительное пространство

Эта статья предоставлена Nishant_Singh (Pintu) . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Переместите все отрицательные элементы в конец в порядке с дополнительным пространством

0.00 (0%) 0 votes