Bubble Sort em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 29/09/2012)
[ Hits: 10.399 ]
Bubble Sort
É um dos algoritmos mais simples e é indicado apenas para quando se há uma pequena quantidade de dados. Sua implementação é simples, ele percorre uma lista de dados várias vezes, e em cada passagem pela lista ele leva o maior elemento que ele encontrar naquela sequencia para o final (última posição possível para sua colocação).
Complexidade do pior caso: O (n²)
Complexidade do caso médio: O(n²)
Complexidade do melhor caso: n
Espero que gostem. Qualquer dúvida ou discordância, sintam-se livres para me contatar.
Abraços.
import java.util.Scanner;
//Inicio da classe BubbleSort
public class BubbleSort {
//Método bubbleSort, ele é quem faz a ordenação
public static void bubbleSort (int[] dados){
/**
* Inicia a variável que verifica se houve alguma troca entre os items.
* Ela é inicializada como true para poder entrar no laço que garantirá que o
* vetor seja organizado até o final, quantas vezes forem necessárias.
*/
boolean troca = true;
//Laço que garante que o vetor seja verificado quantas vezes forem necessárias
while (troca) {
/**
* Muda o estado da variável troca para que o laço funcione corretamente.
* Se ela entrar no for, e seu estado não for mudado para true, significa que não
* são mais necessárias verificações no vetor.
*/
troca = false;
/**
* Este for realiza apenas uma volta no vetor, o que pode não ser suficiente
* para a total organização dos itens.
*/
for (int posicao = 0; posicao < (dados.length)-1; posicao++){
/**
* Se o dado da posição atual for maior que o dado da próxima posição,
* é realizado uma troca entre eles.
*/
if (dados[posicao] > dados[posicao+1]){
//Copia o valor da próxima posição para uma variável auxiliar
int variavelAuxiliar = dados[posicao+1];
//Coloca o valor da posição atual na próxima posição
dados[posicao+1] = dados[posicao];
//A posição atual recebe o valor que foi copiado para a variável auxiliar
dados[posicao] = variavelAuxiliar;
/**
* Seta true para a troca, indicando que houve troca, evitando assim que
* o vetor não seja verificado uma próxima vez.
* Caso o vetor seja percorrido sem trocas, a variável continuará false
* indicando que não há mais necessidade de verificações no vetor.
*/
troca = true;
}
}
}
//Chama uma função para exibir os dados já organizados.
imprime(dados);
} //Fim do bubbleSort
//Função que imprime os dados organizados.
public static void imprime(int[] dados){
//Para cada iteração do for, ele imprime o dado que estiver na posição indicada pelo variável.
for (int posicao = 0; posicao < dados.length; posicao++ ){
System.out.println(dados[posicao]);
}
}
//Função principal, onde começa a execução.
public static void main(String[] args) {
//Cria um vetor de 10 posições.
int[] dados = new int[10];
//Cria uma instancia de Scanner para realizar a leitura dos valores.
Scanner in = new Scanner(System.in);
//Para cada iteração do for ele lê um valor.
for (int posicao = 0; posicao < dados.length; posicao++ ){
System.out.println("Entre com um valor");
dados[posicao] = in.nextInt();
}
//Chama o método bubbleSort para ordenar os dados recebidos.
bubbleSort(dados);
}
}
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









