Em Java, como mover todos os 0s para o final do array, preservando a ordem de um array? [2 maneiras]

Publicados: 2020-12-31
Em Java, como mover todos os 0s para o final do array, preservando a ordem de um array? [2 maneiras]

Eu tenho jogado com um problema de moving all 0's to end de Arrays em diferentes entrevistas em várias combinações. Às vezes peço para mover todos os 0 para a frente do array, ordenando um array sem nenhuma estrutura de dados e assim por diante.

Neste tutorial, veremos um exemplo simples de mover todos os 0's para terminar preservando a ordem de um Array. Existem duas abordagens.

Abordagem-1)

Lógica de particionamento QuickSort. O que é Ponto de Pivô?

  • O Pivot point é um elemento-chave no algoritmo de classificação rápida. Ele executa e particiona a coleção em torno do ponto de pivô.
  • Ele organiza um Array elementos maiores do que o pivô estão antes dele e os elementos maiores do que o pivô estão depois dele.
  • Continue pelo loop para classificar uma matriz

A lógica é muito simples:

  • Iterar através de um Array.
  • Se array[i] não for igual a 0, troque-o pelo índice atual.
  • Se array[i] == 0, simplesmente pule o loop
  • No nosso caso 0 is a Pivot point .
  • Cada vez que encontramos 0, o contra-pivô será incrementado e o elemento será movido antes do ponto de pivô.

Abordagem-2)

  • Crie um novo array com o mesmo tamanho
  • Iterar através de um Array e pular a adição de 0

Aqui está um Programa Completo:

CrunchifyMoveAll0ToEnd.java

Saída do console do Eclipse:

Deixe-me saber se você conhece melhor maneira de resolver este problema. Eu adoraria ouvir seus pensamentos.