métodos ordenação C, bolha, selection sort e insertion sort

Post on 24-Jun-2015

7.254 views 1 download

Tags:

description

Métodos de ordenação, aula.

Transcript of métodos ordenação C, bolha, selection sort e insertion sort

Metodos de Ordenacao: Ordenacao por Bolha,

Selecao Direta e Insercao

Professor:

Silvio Luiz Bragatto Boss

e-mail:

silvioboss@utfpr.edu.br

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