Bubble Sort é um dos algoritmos de classificação mais simples em programação. Ele percorre repetidamente a sequência a ser classificada, comparando dois elementos por vez e trocando-os se estiverem na ordem errada. Repita o trabalho de visitar o array até que não haja mais elementos que precisem ser trocados, o que significa que o array foi ordenado.
A classificação por bolha é como bolhas emergindo da água; na classificação por bolha, o menor ou o maior número, dependendo se estamos classificando a matriz em ordem crescente ou decrescente, as bolhas aparecem no início ou no final da matriz.
1) Compare os elementos adjacentes Se o primeiro for maior que o segundo, troque os dois.
2) Faça o mesmo para cada par de elementos adjacentes, começando com o primeiro par e terminando com o último par, momento em que o último elemento deve ser o maior número.
3) Repita as etapas acima para todos os elementos, exceto o último.
4) Continue repetindo as etapas acima para cada vez menos elementos até que não haja pares de números para comparar.
A classificação por bolha tem um desempenho ruim em comparação com outros algoritmos de classificação, como classificação rápida, classificação por mesclagem ou classificação por shell. A complexidade média do caso desses algoritmos é O(nlogn), enquanto a complexidade média do caso da classificação por bolha é O(n^2).
Na melhor das hipóteses, o bubble sort é melhor que o quicksort com desempenho O(n). A classificação por bolha é três vezes mais lenta que a classificação rápida ou classificação por mesclagem, mesmo com n = 100, mas é mais fácil de implementar e lembrar.
A complexidade e o desempenho da classificação por bolha são os seguintes:
1) O pior caso de desempenho da classificação por bolha é O (n ^ 2)
2) O melhor desempenho de classificação por bolha é O (n)
3) O desempenho médio da classificação por bolha é O (n ^ 2)
//Bubble sort publicstaticvoidbubbleSort(int[]arr){//O loop externo é usado para controlar o número de voltas do loop da matriz for(inti=0;i<arr.length-1;i++){//O interno loop é usado para completar a comparação do valor do elemento e trocar os valores dos elementos grandes para trás for (intj=0;j<a rr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1 ]=temp;}}}//Resultado de saída for(intn:nums){System.out.println(n);}}
Por exemplo:
publicclassMain{publicstaticvoidmain(String[]args){inta[]={6,1,15,32,9};for(inti=1;i<a.length;i++){for(intj=0;j<a .comprimento-1;j++){ if(a[j]>a[j+1]){inttemp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}System.out. println(O resultado da classificação por bolha é:);for(inttemp:a){System.out.print(temp+);}}}
Os resultados da execução são os seguintes:
O resultado da classificação por bolha é: 1691532
Você pode experimentar você mesmo!