You are on page 1of 54

Scribd Carregar um documento

Pesquisar livros, apresentaes, empresas, instituies acadmicas... Pesquisar Documentos

Explorar

Documentos
Livros - Fico Livros - No fico Sade e medicina Catlogos Documentos governamentais Guias/Manuais Como fazer Revistas e jornais Receitas/Menus Trabalho escolar + todas as categorias Apresentou Recente

Pessoas
Autores Estudantes Pesquisadores Editores Governamental e sem fins lucrativos Negcios Msicos Artistas e designers Professores + todas as categorias Os mais seguidos Popular

Philip Days

Conta
Pgina inicial

Meus documentos Minhas colees Minha estante Exibir perfil pblico Mensagens Notificaes Configuraes Ajuda Sair

Anlise de Algoritmos

operao de movimentao de registros, para qualquer valor de i existe no mximo uma troca. Se a lista j est ordenada, no ocorre nenhuma troca, portanto: bM(n) = 0. No pior caso, existe uma troca para cada loop de k, portanto: wM(n) = 3 (n-1) , porque uma troca exige trs movimentos. O algoritmo de ordenao por seleo um dos mtodos de ordenao mais simples que existem. Alm disso, o mtodo possui um comportamento espetacular quanto ao nmero de movimentos de registros, cujo tempo de execuo linear no tamanho da entrada, o que muito dificil de ser batido por qualquer outro mtodo. Consequentemente, este o algoritmo a ser utilizado para arquivos com registros muito grandes. Em condies normais, com chaves do tamanho de uma palavra, este mtodo bastante interessante para arquivos com at 1000 registros. Como aspectos negativos cabe registrar que: a) o fato do arquivo j estar ordenado no ajuda em nada, pois o custo continua quadrtico; b) o algoritmo no estvel, pois ele nem sempre deixa os registros com chaves iguais na mesma posio relativa.
4.3 - Mtodo de ordenao por Insero

A ordenao por Insero quase to simples quanto o algoritmo de ordenao por Seleo, e alm disso um mtodo estvel, pois deixa os registros com chaves iguais na mesma posio relativa. O mtodo consiste para a passo, a partir de sendo colocado na posio correta. apanhado e transferidoem cada seqncia destino,i=2, o i-simo item da seqncia fonteA

O mtodo consiste para a passo, a partir de sendo colocado na posio correta. apanhado e transferidoem cada seqncia destino,i=2, o i-simo item da seqncia fonteA insero do elemento no lugar de destino efetuado movendo-se os itens com chave maiores para a direita e ento inserindo-o na posio que ficou vazia. Neste processo de alternar comparaes e movimentao de registros existem duas situaes que podem causar o trmino do processo, a primeira quando um item com chave menor que o item em considerao encontrado e a segunda situao quando o final da seqncia destino atingida ( esquerda). A melhor soluo para a situao de um anel com duas condies de terminao a utilizao de uma sentinela, para isto, na posio zero do vetor colocamos o prprio registro analisado.
4.3.1 - Algoritmo de Ordenao por Insero

Entrada: A (lista ou vetor de elementos), n (tamanho da lista) Sada: A (lista ou vetor de elementos)
Insero (A, n) Para i=2 at n faca x A[i]; j i 1; A[0] x; Enquanto x < A[j] faca

Prof. Walteno Martins Parreira Jr

Pg. 31

Anlise de Algoritmos

A[j+1] A[j]; j j 1; fim-enquanto; A[j+1] x; fim-para.

4.3.2 - Anlise de complexidade do algoritmo

No anel mais interno, na i-sima iterao, o valor de Ci : Melhor caso: Ci(n) = 1 Pior caso: Ci(n) = i 1 (i+1) Caso mdio: Ci(n) = /i(1 + 2 + ... + i) = /2 Assumindo que todas as permutaes de n so igualmente provveis para o caso mdio, logo, o nmero de comparaes igual a =n-1 Melhor caso: C(n) = (1 + 1 + ... + 1) Pior caso: C(n) = (2 + 3 + ... + n) = n2/2 + n/2 - 1 1 2 3n Caso mdio: C(n) = /2(3 + 4 + ... + n+1) = n /4 + /4 - 1 O nmero de movimentaes na i-sima iterao igual a Mi(n) = Ci(n) 1 + 3 = Ci(n) + 2 Logo, o nmero de movimentos igual a = 3(n 1) Melhor caso: M(n) = (3 + 3 + ... + 3) Pior caso: M(n) = (4 + 5 + ... + n+2) = n2/2 + 5n/2 - 3 1 2 11n Caso mdio: M(n) = /2(5 + 6 + ... + n+3) = n /4 + /4 3 Deste modo podemos concluir que: Melhor caso: O(n)

Pior caso:

O(n2)

Caso mdio: O(n2)

O nmero mnimo de comparaes e movimentos ocorre quando os elementos esto originalmente em ordem, e o nmero mximo ocorre quando os itens esto originalmente na ordem reversa, o que indica um comportamento natural para o algoritmo. Para arquivos j ordenados o algoritmo descobre a um custo arquivo est quasejordenado.seu lugar. Logo, este o mtodo a ser utilizado quando o O(n) que cada item est em tambm um mtodo bom para adicionar um pequeno conjunto de dados a um arquivo j ordenado, originado um outro arquivo ordenado, pois neste caso o custo pode ser considerado linear.

Prof. Walteno Martins Parreira Jr

Pg. 32

Anlise de Algoritmos

4.4 - Mtodo de ordenao Quicksort

um mtodo de ordenao por troca. Entretanto, enquanto o bubblesort (bolha) troca pares de elementos consecutivos, o quicksort compara pares de elementos distantes, o que acelera o processo de ordenao. A verso original do mtodo foi apresentada por C. A. R. Hoare, em 1960. um algoritmo de troca do tipo diviso e conquista que resolve um determinado problema dividindo-o em trs subproblemas, tais que: o primeiro subproblema composto dos elementos menores ou iguais ao piv, o segundo subproblema o prprio piv e o terceiro subproblema so os elementos maiores ou iguais ao piv. A seguir, os problemas menores so ordenados independentemente e depois os resultados so combinados para produzir a soluo do problema maior. O primeiro passo do algoritmo crucial, por enquanto no ser especificado como escolher o piv, pois o algoritmo funciona independentemente do elemento escolhido para ser o piv. Entretanto, a seleo do piv afeta diretamente o tempo de processamento do algoritmo. O mtodo consiste em alocar um determinado elemento em sua posio correta dentro da futura lista ordenada, produzindo uma partio da lista em trs sub-listas: a) a sub-lista que contm todos os elementos que so menores ou iguais ao elemento alocado; b) a sub-lista formada somente pelo elemento alocado; c) a sub-lista que contm todos os elementos que so maiores ou iguais ao elemento alocado. A parte mais delicada deste mtodo relativa ao procedimento partio, o qual tem que rearranjar a lista A atravs da escolha arbitria de um item X da lista denominado piv, de tal forma que ao final a lista A est particionada em uma parte esquerda com os elementos menores ou iguais a X e uma parte direita com elementos maiores ou iguais a X. Este comportamento pode ser descrito pelo algoritmo:

Este comportamento pode ser descrito pelo algoritmo: a) escolha arbitrariamente um elemento da lista e coloca em X; b) percorra a lista a partir da esquerda ate que um elemento A[i] X encontrado; da mesma forma forma percorra a lista a partir da direita at que um elemento A[j] X encontrado; c) como os dois elementos A[i] e A[j] esto fora do lugar na lista final, ento troque-os de lugar; d) continue este processo at que os apontadores i e j se cruzem em algum ponto da lista. Ao final a lista A est particionada de tal forma que: a) Os elementos em A[esq], A[esq + 1], ..., A[j] so menores ou iguais a X; b) Os elementos em A[i], A[i + 1], ..., A[dir] so maiores ou iguais a X.

Prof. Walteno Martins Parreira Jr

Pg. 33

Anlise de Algoritmos

4.4.1 - Algoritmo Partio

O objetivo particionar a lista em trs sublistas, alocando o elemento separador e determinando a sua posio de alocao, definindo segundo o campo chave. Entradas: p (inteiroinicio da sublista), u (inteiro-final da sublista), x (lista de elementos) Sadas: j (inteiro-posio do elemento particionado), x (lista de elementos)
Particao(p,u,x) i p;
j u + 1; Enquanto i < j faa repita i i + 1 at que x[i] x[p]; repita j j 1 at que x[j] x[p]; se i < j ento aux x[i] x[i] x[j] x[j] aux; fim-enquanto; aux x[p]; x[p] x[j]; x[j] aux; retorna(j);

4.4.2 - Verso recursiva do Quicksort

Aps a primeira partio, so particionadas as sub-listas resultantes e as que delas resultam, e assim sucessivamente at que degenerem em listas vazias ou unitrias. Isto sugere que o algoritmo pode ser implementado recursivamente. Observe que se p u, a sublista correspondente unitria ou vazia. O objetivo do algoritmo ordenar uma lista, segundo o campo ch pelo mtodo quicksort. Entradas: p, u (inteiro), x (lista de elementos) Sada: x (lista de elementos)

Sada: x (lista de elementos)


Quicksort (p, u, x) se p < u
ento j particao (p, u, x); quicksort (p, j-1, x); quicksort (j+1, u, x);

4.4.3 - Outra verso recursiva do Quicksort

Outra verso do algoritmo, mas utilizando os mesmos conceitos apresentados acima. entrada: x (vetor ou lista com os elementos), n ( inteiro-tamanho) sada: x (vetor ou lista com os elementos)

Prof. Walteno Martins Parreira Jr

Pg. 34

Anlise de Algoritmos

Quicksort (x, n);

Entradas: esq (inteiroinicio da sublista), dir (inteiro-final da sublista), Sadas: i, j (inteiros-posio final da particio),
Particao (esq, dir, i) i esq; j dir; ele x[ (i + j) div 2 ]; { que a chave} repita enquanto ele > x[i] faca i i + 1; fim-enquanto; enquanto ele < x[j] faca j j 1; fim-enquanto; se i j ento aux x[i] x[i] x[j] x[j] aux; i i + 1; j j 1; enquanto i > j; retorna(j); Ordena (esq, dir); J particao (esq, dir, i); (chamada do procedimento} se esq < j entao ordena(esq, j); (chamada recursiva} se i < dir entao ordena(i, dir);
{chamada do procedimento ordena} ordena(1,n).

4.4.4 - Verso iterativa do Quicksort

Na verso recursiva do quicksort cada vez que o procedimento chamado, uma nova cpia dos parmetros armazenada na memria, o que implica numa utilizao maior da memria e indiretamente reduo do tamanho mximo da lista que pode ser processada. Para otimizar o uso da memria utiliza-se a verso iterativa do quicksort, que consiste em: aps cada partio, sistematicamente a maior sub-lista colocada numa pilha e a menor particionada imediatamente. Este procedimento continua at que resultem listas vazias ou unitrias, prosseguindo-se com as sub-listas guardadas na pilha. A ordenao estar concluda quando resultarem sub-listas vazias ou unitrias e a pilha vazia.

Prof. Walteno Martins Parreira Jr

Pg. 35

Anlise de Algoritmos

Aps uma partio no necessrio colocar todos os elementos da sub-lista maior na pilha, mas apenas os ndices de primeiro e ltimo elemento. Portanto, aps a partio da sublista: {Xp, Xp+1, ..., Xu} obtemos as novas sub-listas: {Xp, ..., Xj-1}, {Xj}, {Xj+1, ..., Xu} as quais passam a ser representadas pelos pares ordenados: (p, j-1) e (j+1, u) respectivamente. A estratgia abaixo produz a escolha da menor sub-lista e o armazenamento da maior sub-lista:

Se as duas sub-listas no so unitrias e nem vazias, colocamos a maior na pilha e escolhemos a menor; Se as duas so vazias ou unitrias, escolhemos a que est no topo da pilha; se a pilha est vazia ento o processo terminou; Se apenas uma delas no vazia e nem unitria, ela ser a escolhida. Para definir o tamanho da sub-lista, usamos: Sub-lista Tamanho (p, j-1) j-p (j+1, u) uj Sub-lista no vazia e nem unitria p < j-1 j+1 < u

O Algoritmo Escolhe

O objetivo que aps a partio da sublista {Xp, ..., Xu} nas sub-listas {Xp, ..., Xj-1}, {Xj}, {Xj+1, ..., Xu} de escolher a nova sublista a ser particionada, isto , redefinir os valores dos ndices p e u. Se no existir sub-lista a ser particionada o valor de p igual a u. Inicialmente a pilha est vazia e topo igual a zero. Entradas: p, u, j (inteiros) Sadas: p, u (inteiros)
Escolhe (p, u, j) Se (p < j-1) e (j-1 < u) ento Se (j p) (u ento topo s[topo, s[topo,

j) topo + 1; 1] p; 2] j1;

s[topo, 2] j1; seno p j + 1; topo topo + 1; s[topo, 1] j+1; s[topo, 2] j1; seno Se (p j-1) e (j-1 u) ento Se topo > o ento p s[topo, 1]; u s[topo, 2]; topo topo 1 seno p u seno Se (p < j-1)

Prof. Walteno Martins Parreira Jr

Pg. 36

aa_aps

Baixar este documento gratuitamenteImprimirCelularColeesDenunciar documento Este documento particular.

Informaes e classificao
Osvaldo Nguli
Like Be the first of your friends to like this.

POP Proteo Total Ganhe 6 meses Grtis de Antivrus Para o seu Computador. Aproveite!
www.Pro teca oTota l.P O P .com .br

Shell Aviation Aviation Fuels, Technical Services AeroShell Lubricants and more.
www.she ll.com /a via tio n

Notebbok Dell Vostro 3500 Com Intel Core e 4GB S R$1799. Em 10x sem Juros, Aproveite!
www.Dell.co m /br/Vo stro

Curso de Ingls Online Curso C/ Foco Nas Suas Necessidades Estude Quando Quiser 24h Por Dia.
www.Englishtown.com /C urso_Ingles

Sees
exibir tudo ant | seg 1 Desenvolvimento de Algoritmos 1.1 Introduo 1.2 O que um algoritmo 1.3 Medidas de Complexidade 1.4 Anlise de Complexidade de um algoritmo 1.5 Notao O 1.6 Convenes para as expresses de O 1.7 Exemplo de anlise da notao O 1.8 Anlise de complexidade da Busca Linear

Compartilhar e integrar Mais coisas deste usurio


AnteriorPrximo

1. 52 p.

Adicionar comentrio

Enviar

compartilhar: Caracteres: 400 Carregar um documento


Pesquisar livros, apresentaes, empresas, instituies acadmicas... Pesquisar Documentos

Siga-nos! scribd.com/scribd twitter.com/scribd facebook.com/scribd Sobre Imprensa Blog Parceiros Scribd 101 Material da web Loja Scribd Suporte Perguntas frequentes Desenvolvedores/API Vagas Termos Copyright Privacidade Copyright 2011 Scribd Inc. Idioma: Portugus (Brasil)

You might also like