Cap 11 - Ordenacao Conj e Selecao-4spp

Cap 11 - Ordenacao Conj e Selecao-4spp - Problema ! Dada...

Info iconThis preview shows pages 1–4. Sign up to view the full content.

View Full Document Right Arrow Icon
Ordenação 2 Problema Dada uma seqüência de elementos: a 1 , 2 , 3 , . .., n-1 , n Faça permutações nos elementos para obter uma nova seqüência: a’ , , , . .., , de modo que 1 ! 2 ! ... ! n-1 ! onde ! é uma relação de ordem total. 3 Ordenação por Trocas Ordena a seqüência permutando-a, ou seja, trocando as colocações de seus elementos. Existem diversos algoritmos de ordenação por trocas. O método da bolha é um dos mais conhecidos, fáceis de entender e simples de implementar. Por simplicidade e sem perda de generalidade, introduziremos esse método assumindo que a seqüência de elementos a serem ordenados resume-se a um arranjo de números reais. 4 Método da Bolha Percorra o arranjo da esquerda para direita: ! comparando elementos vizinhos, troque os que estiverem fora de ordem. Considere o arranjo inicial: comparando v[0] com v[1] ! troca comparando v[1] com v[2] ! não troca comparando v[2] com v[3] ! troca comparando v[3] com v[4] ! troca Após a 1a iteração o arranjo fica: 7 5 9 3 2 5 7 3 2 9
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
5 Execução Completa Disposição Inicial 1ª iteração 2ª iteração 3ª iteração 4ª iteração 7 5 9 3 2 5 7 3 2 9 5 3 2 7 9 3 2 5 7 9 2 3 5 7 9 6 Algoritmo - Bolha public static void Bolha ( double v[]) { int aux; for ( int j=v.length-1; j>0; j--) for ( int i=0; i<j; i++) if (v[i] > v[i+1]) { aux = v[i]; v[i] = v[i+1]; v[i+1] = aux; } } 7 Desempenho Note que após a i -ésima iteração os i elementos mais à direita estarão em suas colocações corretas. Com isso podemos limitar o número de iterações em n- 1 , onde n é o número de elementos a serem ordenados. Podemos ainda, na i - ésima iteração, limitar a passagem do algoritmo aos primeiros n - i + 1 elementos da seqüência . Logo, considerando que os elementos a serem ordenados podem ser comparados em tempo constante, o tempo de execução do algoritmo em qualquer caso será: O ( n + n -1 + + 2 ) = O ( n ( n +1)/2 - 1 ) = O ( n 2 ) Merge-Sort 7 2 " 9 4 # 2 4 7 9 7 " 2 # 2 7 9 " 4 # 4 9 7 # 7 2 # 2 9 # 9 4 # 4
Background image of page 2
9 Algoritmo Merge-Sort Merge-sort é um algoritmo de ordenação baseado em divisão e conquista . Divisão e Conquista é um padrão de projeto de algoritmos constituído de 3 fases: ! Divisão : divide o conjunto de dados de entrada S em dois subconjuntos disjuntos S 1 e S 2 . ! Recursão : resolve recursivamente os subproblemas associados a S 1 e S 2 . ! Conquista : combina as soluções individuais para S 1 e S 2 em uma solução única para S . Assim como o heap-sort: ! Usa um comparador. ! Requer tempo O ( n log n ) . Ao contrário do heap-sort: ! Não utiliza fila de prioridade auxiliar. ! Acessa os dados de forma seqüencial (adequado para grandes quantidades de dados armazenados em disco). 10 Pseudo-Código Dada uma seqüência S com n elementos: ! Divisão : particiona S em duas seqüências S 1 e S 2 de aproximadamente n / 2 elementos cada. ! Recursão : ordena S 1 e S 2 recursivamente.
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 4
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 04/02/2012 for the course DC 11 taught by Professor Milton during the Spring '12 term at Alaska Pacific University.

Page1 / 16

Cap 11 - Ordenacao Conj e Selecao-4spp - Problema ! Dada...

This preview shows document pages 1 - 4. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online