Ilustração de classificação de bolhas sem código
Considere a seguinte lista de caracteres de caracteres do alfabeto:
Q W E R T Y U I O PEsta lista será classificada em ordem ascendente da seguinte maneira. Na primeira varredura, Q e W são comparados; Q é menor que w, então não há como trocar. Ainda assim, na primeira varredura, W e E são comparados; E é menor que W, então há trocas. O novo terceiro elemento, W, é comparado com r; R é menor que w, então há trocando. O novo quarto elemento, W, é comparado com T; T é menor que w, então há trocando. O novo quinto elemento, W, é comparado com Y; W é menor que y, e não há como trocar. Ainda assim, na primeira varredura, Y é comparado com u; Você é menor que y, então há trocando. O novo sétimo elemento, Y, é comparado com I; Eu sou menos que Y, e há trocando. O novo oitavo elemento, Y, é comparado com O; O é menor que y, e há trocando. O novo nono elemento, Y, é comparado com P; P é menor que Y, e há troca. A primeira varredura termina aí. O resultado da primeira varredura é,
Q e r t w u i o p yObserve que o maior elemento está no final após a primeira varredura. A varredura de todos os dez elementos resultantes e a troca possível é repetida mais uma vez para ter:
E r q t u i o p w yObserve que o próximo maior elemento é agora o último elemento, mas um, e não havia necessidade de compará-lo com o último elemento, então um pequeno tempo não teria sido desperdiçado. A varredura de todos os dez elementos resultantes e a troca possível é repetida mais uma vez para ter:
E q r t i o p u w yObserve que o terceiro maior elemento para o final está agora na terceira posição do final, e não havia necessidade de compará-lo com os dois últimos elementos, e não há necessidade de comparar os dois últimos elementos, e então alguns pequenos tempo não teria sido desperdiçado. A varredura de todos os dez elementos resultantes e a troca possível é repetida mais uma vez para ter:
E q r i o p t u w yObserve que o quarto maior elemento no final está agora na quarta posição do final, e não havia necessidade de compará -lo com os últimos três elementos, e não há necessidade de comparar os três últimos elementos foram desperdiçados. A varredura de todos os dez elementos resultantes e a troca possível é repetida mais uma vez para ter:
E q i o p r t u w yObserve que o quinto maior elemento no final está agora na quinta posição desde o final, e não havia necessidade de compará -lo com os últimos quatro elementos, e não há necessidade de comparar os quatro últimos elementos, e assim o tempo não teria foi desperdiçado. A varredura de todos os dez elementos resultantes e a troca possível é repetida novamente para ter:
E i o p q r t u w yO restante dos resultados da varredura é o seguinte:
E i o p q r t u w yObserve que nenhuma classificação ocorreu para esses últimos quatro resultados.
O inverso de todos os algoritmos acima pode ser feito para classificar.
Otimizando o tipo de bolha
A partir da definição básica de tipo de bolha, se houver n elementos, haverá n verificações completas. Uma varredura é uma iteração. Então, os dez elementos acima significam dez iterações completas. O tempo total de tempo para a Bubble classificar uma lista (matriz) pode ser reduzida para muitas listas não classificadas. Isso envolve estratégias de classificação de bolhas. O tipo de bolha é otimizado com duas estratégias.
Primeira estratégia de otimização
Observe do exposto que, após a primeira iteração completa, o maior elemento é no final, e seria uma perda de tempo acessando -a na segunda iteração. Após a segunda iteração, os dois últimos elementos estão em suas posições certas, e o tempo não deve ser desperdiçado acessando -os na terceira iteração. Isso significa que a segunda iteração deve terminar em N-1. Após a terceira iteração, os três últimos elementos estão em suas posições certas, e o tempo não deve ser desperdiçado acessando -os na quarta iteração. Isso significa que a terceira iteração deve terminar em N-2. Após a quarta iteração, os últimos quatro elementos estão em suas posições certas, e o tempo não deve ser desperdiçado acessando -os na quinta iteração. Isso significa que a quarta iteração deve terminar em N-3. Isso continua.
A partir da definição básica de tipo de bolha, a iteração deve ser feita n vezes. Se o balcão das nirerações estiver em I, a iteração deve acessar os elementos n - i para evitar perder tempo no final da matriz; E com eu começando de 0. Portanto, tem que haver dois loops java: o loop externo iterado n vezes, e o interior do loop itera n-i tempos, para os elementos da matriz, para cada uma das n vezes. Iterando uma matriz n - i times é a primeira estratégia.
Segunda estratégia de otimização
O loop externo deve realmente iterar n vezes? O loop externo deve ser o loop da lista acima 10 vezes? - Não, porque suas últimas quatro iterações não mudariam nada (não faz nenhuma classificação). Isso significa que a lista foi classificada assim que for detectada; O loop externo deve quebrar, então a classificação deve parar. Isso vai economizar mais tempo. Isso pode ser alcançado com uma variável booleana para o loop externo, que permaneceria falsa no loop interno quando a troca de parar de ocorrer.
Código Java para Corrente de Bubble
A aula a seguir tem o método para fazer a classificação:
classe AclassObserve a condição enquanto condiciona “J < N - i;” for the inner for-loop, for the first strategy. Note the use of the boolean variable in the outer for-loop and the inner for-loop for the second strategy.
Uma classe principal adequada para isso é:
classe pública theClassA matriz é passada por referência ao método bubblesort () em uma classe diferente. Portanto, seu conteúdo é modificado. A saída é:
E i o p q r t u w y
Conclusão
Classificações de bolhas trocando elementos adjacentes do início ao final da lista. Este procedimento é repetido repetidamente até que toda a lista seja completamente classificada. A classificação está ascendente ou descendente. O tipo de bolha deve ser otimizado, conforme explicado acima.