1 - a) Considerando que necessrio realizar a ordenao no menor tempo possvel, em
ambos os arquivos de tamanho 75, 500 e 1000000 eu usaria o QuickSort, primeiramente
pelo seu custo O (n log n) comparaes e na tabela comparativa dos mtodos de ordenao do Livro Projeto de Algoritmos com implementao em Pascal e C, ele se mostrou o mais eficiente e rpido para ordenar arquivos de 500, 5000, 1000 e 30000 registros. Uma implementao robusta desse mtodo a melhor escolha para ordenar vetores. b) Como eu no poderia usar um mtodo em que a ocorrncia seria possvel de um pior caso no fosse permitida, e ainda assim precisaria realizar a ordenao dos elementos dos arquivos no pior tempo possvel, para os casos de 75, 500 e 1000000 eu usaria o mtodo da Seleo, pois um dos mtodos mais simples, e requer O(n) comparaes, alm de ser apresentado como o mtodo mais lentos nas tabelas de comparaes do Livro Projeto de Algoritmos com implementao em Pascal e C. 2 - Pela anlise dos fatos, podemos perceber que apesar de cada chave ter os seus 4 bits menos significativos aleatoriamente alterados, eles ainda esto ordenados, pois o computador no foi destrudo, e antes da catstrofe as chaves j foram submetidas a uma ordenao por um mtodo O(n log n). E j que teria que ser escolhido um algoritmo que ordene os novos nmeros em O(n), o melhor mtodo a ser escolhido o Insero, pois como cada chave j est ordenada, e para arquivos j ordenados, o custo para a descoberta que cada item j est em seu lugar O(n). a) Quando h casos de restries por estabilidade, a melhor escolha a ser feita o de Insero, tanto para verificar que os nmeros j esto em ordem quanto para ordenar os 4 bits menos significativos de cada chave, pois entre os mtodos estudados, foi o nico que se apresentou estvel. b) Quando se tem restries de intolerncia ao pior caso, para se ordenar os 4 bits menos significativos (que foram aleatoriamente alterados) a melhor escolha o HeapSort, que qualquer que seja sua entrada, o comportamento dele O(n log n). 5 O algoritmo ShellSort divide o vetor a ser ordenado em partes menores para facilitar a ordenao dos itens, por isso, apesar de quando H=1 ele se comporta como o mtodo de Insero direta, o vetor j est pr-ordenado sendo necessrias somente algumas poucas trocas. Por ele no ordenar o vetor inteiro diretamente, em algum momento possvel que a ordem original dos registros de chaves iguais no seja preservada, o torna um mtodo no estvel. A imagem abaixo mostra a troca da ordem original dos registros de chaves iguais:
7 O mtodo de Insero para este caso o mais eficiente pois para
arquivos j ordenados, verifica e ordena os arquivos em menos tempo que o QuickSort, tornando-se ideal para colocar em ordem arquivos quase ordenados, e tendo um custo de O(n), caso os arquivos estejam ordenados. Quando se trata de vetores j ordenados, o QuickSort cai em seu pior caso, onde as comparaes so em sua maior parte desequilibradas, fazendo o custo ser O(n).