Programa Java para mover todos los ceros al final de la array – Part 1

Dada una array de números aleatorios, Empuje todos los ceros de una array dada al final de la array. Por ejemplo, si las arrays dadas son {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, debe cambiarse a {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}. El orden de todos los demás elementos debe ser el mismo. La complejidad de tiempo esperada es O(n) y el espacio adicional es O(1).
Ejemplo: 
 

Input :  arr[] = {1, 2, 0, 4, 3, 0, 5, 0};
Output : arr[] = {1, 2, 4, 3, 5, 0, 0};

Input : arr[]  = {1, 2, 0, 0, 0, 3, 6};
Output : arr[] = {1, 2, 3, 6, 0, 0, 0};

Puede haber muchas maneras de resolver este problema. A continuación se muestra una forma sencilla e interesante de resolver este problema. 
Recorre la array dada ‘arr’ de izquierda a derecha. Durante el recorrido, mantenga el conteo de elementos distintos de cero en la array. Que el conteo sea ‘contar’. Para cada elemento distinto de cero arr[i], coloque el elemento en ‘arr[count]’ e incremente ‘count’. Después de completar el recorrido, todos los elementos distintos de cero ya se han desplazado al frente y ‘contar’ se establece como índice del primer 0. Ahora todo lo que tenemos que hacer es ejecutar un ciclo que hace que todos los elementos sean cero desde ‘contar’ hasta el final de la array
A continuación se muestra la implementación del enfoque anterior. 
 

Java

/* Java program to push zeroes to back of array */
import java.io.*;
  
class PushZero
{
    // Function which pushes all zeros to end of an array.
    static void pushZerosToEnd(int arr[], int n)
    {
        int count = 0;  // Count of non-zero elements
  
        // Traverse the array. If element encountered is
        // non-zero, then replace the element at index 'count'
        // with this element
        for (int i = 0; i < n; i++)
            if (arr[i] != 0)
                arr[count++] = arr[i]; // here count is
                                       // incremented
  
        // Now all non-zero elements have been shifted to
        // front and 'count' is set as index of first 0.
        // Make all elements 0 from count to end.
        while (count < n)
            arr[count++] = 0;
    }
  
    /*Driver function to check for above functions*/
    public static void main (String[] args)
    {
        int arr[] = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9};
        int n = arr.length;
        pushZerosToEnd(arr, n);
        System.out.println("Array after pushing zeros to the back: ");
        for (int i=0; i<n; i++)
            System.out.print(arr[i]+" ");
    }
}
/* This code is contributed by Devesh Agrawal */

Producción: 
 

Array after pushing all zeros to end of array :
1 9 8 4 2 7 6 9 0 0 0 0

Complejidad de tiempo: O (n) donde n es el número de elementos en la array de entrada.
Espacio Auxiliar: O(1)
 

Consulte el artículo completo sobre Mover todos los ceros al final de la array para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *