métodos de ordenação - comparação

Upload: fonsecagabriella

Post on 20-Jul-2015

197 views

Category:

Documents


0 download

TRANSCRIPT

CENTRO UNIVERSITRIO LA SALLE

CURSO: Curso de Cincia da Computao DISCIPLINA: Estrutura de Dados II PROFESSORA: Magal T. Longhi

Comparao entre os Mtodos de Ordenao(Material preparado para a disciplina de Estrutura de Dados II do Curso de Bacharelado em Cincia da Computao do UNILASALLE por Magal T. Longhi e baseado nos livros: (a) Projetos de Algoritmos com implementaes em Pascal e C de Nvio Ziviani e (b) Mtodos de Classificao de Dados e anlise de suas complexidades de Paulo Azeredo)

A tabela abaixo apresenta quadros comparativos do tempo real para ordenar arranjos (vetores) de forma ascendente com 500, 5000, 10000 e 30000 registros que esto em ordem aleatria, crescente e decrescente, respectivamente. O mtodo que levou menos tempo real para executar recebeu valor 1 e os outros valores so relativos a ele.Mtodo Insero Direta Seleo Direta Shellsort Quicksort Heapsort Ordem Aleatria 5000 10000 30000 87 124 1,6 1 1,6 161 228 1,7 1 1,6 2 1 1,6 Ordem Crescente 5000 10000 30000 1 1524 6,8 6,3 20,8 1 3066 7,3 6,8 22,4 1 8,1 7,1 24,6 Ordem Decrescente 5000 10000 30000 305 221 1,5 1 2,7 575 407 1,6 1 2,7 1,6 1 2,9

500 11,3 16,2 1,2 1 1,5

500 1 128 3,9 4,1 12,2

500 40,3 29,3 1,5 1 2,5

Observa-se que: 1. Shellsort, quicksort e heapsort tm praticamente a mesma ordem de grandeza para ordem aleatria e decrescente; 2. O quicksort mais rpido para todos os tamanhos aleatrios experimentados. 3. A relao heapsort/quicksort se mantm constante para todos os tamanhos, sendo o heapsort mais lento; 4. A relao shellsort/quicksort aumenta a medida que o nmero de elementos aumenta; 5. O shellsort mais rpido que o heapsort para arquivos pequenos (500 registros) porm quando o tamanho do arquivo aumenta a relao se inverte; 6. A insero mais rpida em qualquer tamanho se os registros j estiverem ordenados (melhor caso). E menos rpida se os registros estiverem em ordem inversa (pior caso). Conclui-se que: 1. O mtodo da Insero o mais interessante para arquivos pequenos (at 20 elementos). estvel e seu comportamento melhor do que o mtodo da bolha ou Bubblesort. Seu desempenho da ordem de O(n) - custo linear; 2. O mtodo da Seleo deve ser usado para arquivos grandes no maior que 1000 registros. 3. O mtodo Shellsort o escolhido pela maioria das aplicaes por ser muito eficiente para arquivos de at 10000 registros. 4. O mtodo Quicksort o algoritmo mais eficiente que existe para uma grande variedade de situaes. Mas um mtodo frgil porque um erro de implementao difcil de ser detectado. O algoritmo recursivo o que demanda memria adicional. Seu desempenho da ordem de 2 O(n ) custo quadrtico. 5. O Heapsort um mtodo de ordenao elegante e eficiente. Apesar de possuir um anel interno complexo que o torna 2 vezes mais lento que o Quicksort, ele no necessita de nenhuma memria adicional. Aplicaes que no podem tolerar variaes no tempo esperado de execuo devem usar este mtodo. Cuidado: Quando o tamanho dos registros de um arquivo grande, desejvel que o mtodo de ordenao faa n movimentos atravs de uma ordenao indireta. Isto pode ser realizado atravs de um Vetor de Apontadores ( P[1], P[2], ..., P[n]) onde cada posio do vetor aponta para o registro de sua ordem. Assim, P[1] aponta para o primeiro registro, P[2] para o segundo registro... Os registro somente sero acessados para fins de comparaes. Toda a movimentao realizada sobre os apontadores. Esta estratgia pode ser utilizada para qualquer dos mtodos de ordenao vistos.