Bubble Sort em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 29/09/2012)
[ Hits: 10.135 ]
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 fazer um automato em Java
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta