35
etodos de Ordena¸c˜ ao:Ordena¸c˜ ao por Bolha, Sele¸ ao Direta e Inser¸c˜ ao Professor: Silvio Luiz Bragatto Boss e-mail: [email protected] Universidade Tecnol´ ogica Federal do Paran´ a - UTFPR Coordenac ¸˜ ao de Inform´ atica - COINF Curso de Engenharia de Computac ¸˜ ao Disciplina de Estrutura de Dados I

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

Embed Size (px)

DESCRIPTION

Métodos de ordenação, aula.

Citation preview

Page 1: 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:

[email protected]

Universidade Tecnologica Federal do Parana - UTFPR

Coordenacao de Informatica - COINF

Curso de Engenharia de Computacao

Disciplina de Estrutura de Dados I

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

Metodos de Ordenacao

Sumario

1 Metodos de OrdenacaoOrdenacao por BolhasOrdenacao por Selecao DiretaOrdenacao por Insercao

Silvio Luiz Bragatto Boss UTFPR

Metodos de Ordenacao LATEX

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Metodos de Ordenacao

Ordenacao por Selecao Direta

O procedimento segue.

Silvio Luiz Bragatto Boss UTFPR

Metodos de Ordenacao LATEX

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

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

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

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

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

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

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

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