apresentação de métodos de ordenação
DESCRIPTION
introdução a métodos de ordenação em vetoresTRANSCRIPT
-
IFMT - CUIAB 1
Ordenao
Alberto Sales
-
2Mtodos de Ordenao: Trocas Seja L = 0, 1, 2, , n1 uma lista cujos itens aparecem
numa ordem aleatria.
A ordenao o processo em que se determina uma permutao, (0), (1), (2), , (n1), dos ndices de L tal que (0) (1) (2) (n1).
ORDENAOPORTROCAS(mtododabolha) Talvez a estratgia mais simples para ordenar os itens de uma
lista seja comparar pares de itens consecutivos e permut-los, caso estejam fora de ordem.
Se a lista for assim processada, sistematicamente, da esquerda para a direita, um item mximo ser deslocado para a ltima posio da lista.
-
3Mtodos de Ordenao Exemplo:
medida em que a lista vai sendo processada, cada nmero vai sendo deslocado para a direita, at que seja encontrado outro maior.
-
4Mtodos de Ordenao: Bolha Exemplo:
Em cada fase desse mtodo, um item de maior valor deslocado para sua posio definitiva na lista ordenada. Ento, se uma lista tem n itens, aps a primeira fase haver n1 itens a ordenar.
Usando a mesma estratgia, aps a segunda fase, termos n2 itens, depois n3 e assim sucessivamente at que reste um nico item.
-
5Mtodos de Ordenao: BolhaExemplo: Veja agora a ordenao completa de uma lista pelo Mtodo da bolha. A varivel i indica a fase da ordenao e j indica a posio do par de itens consecutivos que sero comparados e, eventualmente, permutados.
Note que na ltima fase a lista j est ordenada mas, mesmo assim, uma ltima comparao precisa ser feita para que isso seja confirmado
-
6Mtodos de Ordenao: Bolha Se considerarmos os nmeros maiores como mais pesados e
os menores como mais leves, veremos que, durante a ordenao por esse mtodo, os nmeros mais pesados "descem" rapidamente para o "fundo" do vetor;
Enquanto que os nmeros mais leves "sobem" lentamente para a "superfcie". Os nmeros pesados descem como pedras e os leves sobem como bolhas21 de ar.
-
7Mtodos de Ordenao: Bolha
Ordenao por trocas.void trocas(int v[], int n) {
int i, j;for(i=1; i
-
8Mtodos de Ordenao: Bolha Anlise da ordenao por trocas
Analisando a rotina trocas(), verificamos que o nmero total de comparaes realizadas
(n1)+(n2)+(n3)++2+1 = (n2n), ou seja, a sua complexidade de tempo O(n2).
Como a cada comparao corresponde uma troca em potencial, no pior caso, isto , quando o vetor estiver em ordem decrescente, sero realizadas no mximo (n2n) trocas.
Exerccio 1. Simule a execuo da funo trocas(), no estilo do exemploda ltima lista, para ordenar a lista L = {92, 80, 71, 63, 55,
41, 39, 27, 14} Exerccio 2.
Adapte a funo trocas() de modo que o vetor seja ordenado de forma decrescente.
-
9Mtodos de Ordenao: Seleo
Aestratgiabsicadessemtodo,emcadafase,selecionarummenoritemaindanoordenadoepermutlocomaquelequeocupaasuaposionaseqnciaordenada.
Oobjetivosempreprocuraromenorelementodovetoreinserilonoinciodovetor. Procuramosomenorvalordovetorecolocamoseleemvetor[1].
Procuramosomenorvalordovetorexcluindoojcolocadoecolocamoseleemvetor[2].
...todoovetorordenado.
-
10
Mtodos de Ordenao: Seleo
Maisprecisamente,issopodeserdescritoassim: Paraordenarumaseqncia ,selecioneumavalortalque=min{i,i+1,...,n1},permuteoselementosiee,sei+1
-
11
Mtodos de Ordenao: Seleo
Executandosempreapartirdoltimoelementoreordenado(apartirdoi),oprogramaprocuraomenorelementonovetoreosubstituepeloelementoiatual.
Exemplo1
1. for( i = 1; i< tamanho; i++ ) { 2. minimo = i;3. for( j = i+1; j < = tamanho){4. if(vetor[j] < vetor[minimo])5. minimo = j;6. }8. temp = vetor[i]9. vetor[i] = vetor[minimo]10. vetor[minimo] = temp11. }
-
12
Mtodos de Ordenao: Seleo
Ordenaodaseqncia 46,55,59,14,38,27usandooMtododaSeleo.
Fig1.0 Noteque,emcadafase,umvalorapropriadoparak
escolhidoeositensiesopermutados.Particularmentena4afase,comoosvaloresdeieksoiguais,apermutaonoserianecessria.
-
13
Mtodos de Ordenao: Seleo
Oqueaindanoestmuitoevidentecomoovalordekescolhidoemcadafase.
Paraisso,vamoscodificarafunoindmin(v,i,n),quedevolveondicedeumitemmnimodentrodaseqncia vi,vi+1,...,vn1.
Aestratgiaadotadasupequeoitemviomnimoeentoocomparacomvi+1,vi+2,...atquenohajamaisitensouentoqueumitemmenorvksejaencontrado.
Nessecaso,vkpassaaseromnimoeoprocessocontinuaanalogamente.
-
14
Mtodos de Ordenao: Seleo Selecionandoumitemmnimonumaseqncia.
Inicialmente,oitemv0assumidocomoomnimo(k=0). Entov0comparadoaosdemaisitensdaseqnciaatque
v3encontrado. Comov3
-
15
Mtodos de Ordenao: Seleo Exemplo2:Selecionandoumitemmnimo.
intindmin(intv[],inti,intn){intj,k=i;for(j=i+1;jv[j])k=j;
returnk;}
Exemplo. Ordenao por seleo.void selecao(int v[], int n) {
int i, k, x;for(i=0; i
-
16
Mtodos de Ordenao: SeleoAnlisedaOrdenaoporSeleo:
Analisandoarotinaselecao(),constatamosqueelarealizaomesmonmerodecomparaesquearotinatrocas(),ouseja,(n1)+(n2)++2+1=(n2n).
Entretanto,comoasubseqnciaaordenardiminuideumitemacadatrocafeita,temosqueonmeromximodetrocas(semcontarcomafunoindmin())naselecao()n1;umnmeroconsideravelmentemenordoqueaqueleencontradoparaarotinatrocas().
-
17
Mtodos de Ordenao: Seleo Exerccio1.Simuleaexecuodafunoselecao(),conforme
noexemploFig1.0,paraordenaralistaL={82,50,71,63,85,43,39,97,14}
Exerccio2.Codifiqueafunoselecao()semusarafunoindmin(),ouseja,embutindoalgicadessafunodiretamentenocdigodaselecao().
Exerccio3.Adapteafunoselecao()paraordenarumvetordestrings.
-
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18