Metodos de Ordenacao: Ordenacao por Bolha,
Selecao Direta e Insercao
Professor:
Silvio Luiz Bragatto Boss
e-mail:
Universidade Tecnologica Federal do Parana - UTFPR
Coordenacao de Informatica - COINF
Curso de Engenharia de Computacao
Disciplina de Estrutura de Dados I
Metodos de Ordenacao
Sumario
1 Metodos de OrdenacaoOrdenacao por BolhasOrdenacao por Selecao DiretaOrdenacao por Insercao
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Metodo de ordenacao simples e de entendimento eimplementacao faceis;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Metodo de ordenacao simples e de entendimento eimplementacao faceis;
Bubblesort esta entre os mais conhecidos e difundidosmetodos de ordenacao de arranjos;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Metodo de ordenacao simples e de entendimento eimplementacao faceis;
Bubblesort esta entre os mais conhecidos e difundidosmetodos de ordenacao de arranjos;
Porem nao e um algoritmo eficiente, e estudado para fins dedesenvolvimento de raciocınio.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O Princıpio do Bubblesort e a troca entre posicoesconsecutivas, fazendo com que os valores mais altos (ou maisbaixos) “borbulhem” para o final do arranjo (daı o nomeBubblesort);
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O Princıpio do Bubblesort e a troca entre posicoesconsecutivas, fazendo com que os valores mais altos (ou maisbaixos) “borbulhem” para o final do arranjo (daı o nomeBubblesort);
Neste exemplo, vamos ordenar o arranjo em ordem crescentede valores, consideremos inicialmente um arranjo qualquerdesordenado
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O primeiro passo e se fazer a comparacao entre os doiselementos das primeiras posicoes :
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O primeiro passo e se fazer a comparacao entre os doiselementos das primeiras posicoes :
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O primeiro passo e se fazer a comparacao entre os doiselementos das primeiras posicoes :
Assim verificamos que neste caso os dois primeiros elementosestao desordenados entre si, logo devemos troca-los deposicao. E assim continuamos com as comparacoes doselementos subsequentes:
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O primeiro passo e se fazer a comparacao entre os doiselementos das primeiras posicoes :
Assim verificamos que neste caso os dois primeiros elementosestao desordenados entre si, logo devemos troca-los deposicao. E assim continuamos com as comparacoes doselementos subsequentes:
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Aqui, mais uma vez, verificamos que os elementos estaodesordenados entre si. Devemos fazer a troca e continuarnossas comparacoes ate o final do arranjo:
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Aqui, mais uma vez, verificamos que os elementos estaodesordenados entre si. Devemos fazer a troca e continuarnossas comparacoes ate o final do arranjo:
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Apos este primeiro passo, que compreende a primeirapassagem pelo arranjo fazendo as comparacoes e as trocasnecessarias, verificamos que o maior elemento, o numero 5, foiparar na ultima posicao, seu lugar correto no arranjoordenado. Pode-se dizer que o numero 5 ”borbulhou”3 para asua posicao correta, la no final do arranjo.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
O proximo passo agora sera repetir nosso processo decomparacoes e trocas desde o inıcio do arranjo. So que dessavez o processo nao precisara comparar o penultimo com oultimo elemento, pois o ultimo numero, o numero 5, esta emsua posicao correta no arranjo. Vamos ao processo :
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Novamente se compara os dois primeiros elementos doarranjo. Neste caso, verificamos que sera necessaria a trocade lugares entre os elementos. Em seguida vamoscontinuando as comparacoes ate o final
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Agora precisaremos repetir o processo novamente, mas destavez, alem de nao precisarmos levar em consideracao o ultimoelemento do arranjo (no caso o numero 5 ) que ja estaordenado, tambem nao precisaremos levar em consideracao openultimo elemento do arranjo (no caso o numero 4) pois eletambem esta em sua posicao correta. Vamos entao continuaro processo :
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
Mais uma vez o elemento de maior valor, o numero 3,”borbulhou”para sua posicao correta. Basta agora mais umprocesso para que todo o arranjo fique ordenado.
Neste caso o arranjo ja esta ordenado devido as disposicoesiniciais de nosso arranjo, mas nao e possıvel nosso algoritmosaber se todo o arranjo esta ordenado ou nao, e e exatamentepor isso que precisaremos realizar mais um processo.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
BubbleSort - Ordenacao por Bolhas
programa ordena;
var
vetor1 : vetor [1..5] de inteiros;
i, j, aux: inteiro;
inıcio
para i de 1 ate 5 passo 1 faca
para j de 1 ate 5-i passo 1 faca
se vetor1[j] > vetor1[j+1] ent~ao
aux <-- vetor1[j];
vetor1[j] <-- vetor1[j+1];
vetor1[j+1] <-- aux;
fim_se;
fim_para;
fim_para;
fim.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
O metodo de ordenacao por Selecao Direta e levemente maiseficiente que o metodo Bubblesort, ainda que se trate de umalgoritmo apenas para estudo e ordenacao de pequenosarranjos;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
O metodo de ordenacao por Selecao Direta e levemente maiseficiente que o metodo Bubblesort, ainda que se trate de umalgoritmo apenas para estudo e ordenacao de pequenosarranjos;
A logica consiste em se varrer o arranjo comparando todos osseus elementos com o primeiro;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
O metodo de ordenacao por Selecao Direta e levemente maiseficiente que o metodo Bubblesort, ainda que se trate de umalgoritmo apenas para estudo e ordenacao de pequenosarranjos;
A logica consiste em se varrer o arranjo comparando todos osseus elementos com o primeiro;
Caso o primeiro elemento esteja desordenado em relacao aoelemento que esta sendo comparado com ele no momento, efeita a troca;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
O metodo de ordenacao por Selecao Direta e levemente maiseficiente que o metodo Bubblesort, ainda que se trate de umalgoritmo apenas para estudo e ordenacao de pequenosarranjos;
A logica consiste em se varrer o arranjo comparando todos osseus elementos com o primeiro;
Caso o primeiro elemento esteja desordenado em relacao aoelemento que esta sendo comparado com ele no momento, efeita a troca;
Ao se chegar ao final do arranjo, teremos o menor valor ou omaior, conforme a comparacao na primeira posicao do arranjo.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Embora o numero de comparacoes para o metodo da bolha epara o metodo de selecao direta seja o mesmo, o numero detrocas, no caso medio, e menor para a ordenacao por selecao.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Neste exemplo vamos ordenar o arranjo em ordem crescentede valores. Consideremos inicialmente um arranjo qualquerdesordenado:
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
O passo inicial a se dar e comparar o primeiro elemento comtodos os outros elementos do arranjo. Comecamoscomparando os dois primeiros elementos :
Verifica-se que os dois primeiros elementos estaodesordenados entre si;
Logo devemos troca-los de posicao;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Em seguida continuamos a comparar os outros elementos como elemento da primeira posicao.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Aqui, mais uma vez, verificamos que os elementos estaodesordenados entre si;
A troca e feita e as comparacoes continuam.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Neste caso percebemos que os elementos ja estao ordenadosentre si;
Nao e feita a troca e se continua as comparacoes.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Apos essa primeira etapa, fizemos com que o menor elementodo arranjo fosse deslocado para primeira posicao;
O proximo passo sera repetir este mesmo procedimento, soque desta vez comparando os elementos do arranjo com oelemento que esta na segunda posicao, ja que a primeiraposicao ja foi ordenada.
Neste caso e feita a troca pois os elementos estaodesordenados entre si;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
O procedimento segue.
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Perceba que desta vez o segundo menor elemento do arranjofoi deslocado para a segunda posicao;
O processo continua com a mesma logica, sem compararagora o primeiro e o segundo elementos do arranjo, pois elesja estao em suas posicoes corretas;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
Nestes passos o elemento de menor valor, o numero 3, foideslocado para sua posicao correta. Mais um processo agora etodo o arranjo ficara ordenado:
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Selecao Direta
programa ordena;
var
vetA : vetor [1..5] de inteiros;
i, j, aux: inteiro;
inıcio
para i de 1 ate 4 passo 1 faca
para j de i + 1 ate 5 passo 1 faca
se vetA[j] < vetA[i] ent~ao
aux <-- vetA[j];
vetA[j]; <-- vetA[i];
vetA[i]; <-- aux;
fim_se;
fim_para;
fim_para;
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX
Metodos de Ordenacao
Ordenacao por Insercao
para j de 2 ate n faca
elemento <-- vetor[j];
i<-- j-1;
enquanto i>0 AND vetor[i]>elemento, faca
vetor[i+1] <-- vetor[i];
i<-- i-1;
fim_enquanto
vetor[i+1] <- elemento;
fim_para
Silvio Luiz Bragatto Boss UTFPR
Metodos de Ordenacao LATEX