En Java, ¿cómo mover todos los 0 al final de la matriz conservando el orden de una matriz? [2 maneras]

Publicado: 2020-12-31
En Java, ¿cómo mover todos los 0 al final de la matriz conservando el orden de una matriz? [2 maneras]

He estado jugando con el problema de moving all 0's to end de Arrays en diferentes entrevistas en varias combinaciones. A veces pido mover todos los 0 al frente de la matriz, ordenando una matriz sin ninguna estructura de datos, etc.

En este tutorial, repasaremos un ejemplo simple de mover todos los 0 para conservar el orden de un Array. Hay dos enfoques.

Enfoque-1)

QuickSort Lógica de partición. ¿Qué es el punto de pivote?

  • Pivot point es un elemento clave en el algoritmo de clasificación rápida. Realiza y divide la colección en torno al punto de pivote.
  • Organiza un Array con elementos más grandes que el pivote antes de él, y elementos más grandes que el pivote después de él.
  • Continúe a través del ciclo para ordenar una matriz

La lógica es muy simple:

  • Iterar a través de un Array.
  • Si array[i] no es igual a 0, cámbielo por el índice actual.
  • Si array[i] == 0, simplemente omita el ciclo
  • En nuestro caso, 0 is a Pivot point .
  • Cada vez que encontramos 0, el contrapivote se incrementará y el elemento se moverá antes del punto de pivote.

Enfoque-2)

  • Crear una nueva matriz con el mismo tamaño
  • Iterar a través de una matriz y omitir agregar 0

Aquí hay un programa completo:

CrunchifyMoveAll0ToEnd.java

Salida de la consola de Eclipse:

Avíseme si conoce una mejor manera de resolver este problema. Me encantaría escuchar tus pensamientos.