You are on page 1of 18

Universidade Federal de So Carlos Departamento de Computao

Organizao e Recuperao da Informao Anlise de algoritmos de mtodos de ordenao 14 de Dezembro de 2009. Docentes: Prof.Dr. Jander Moreira Alunos: Matheus Sant' Ana Lima Rafael Luiz Pereira da Silva

Introduo Durante toda a histria da computao, a ordenao de dados um dos problemas que sempre recebeu considervel ateno. Para resolve -lo, diferentes mtodos foram propostos durante vrios anos e, neste artigo, analisamos , atravs de sua implementao na linguagem C, o comportamento de alguns dos mais conhecidos algoritmos que tratam esta questo, so eles: Bubble Sort, Selection Sort, Quick Sort e Shell Sort. Os dados coletados esto divididos em trs categorias: Aleatrio, Crescente e Decrescente. Cada categoria, possui sete subcategorias de dados, cada qual sendo um vetor de tamanho n igual 50, 500, 5.000, 50.000, 80.000, 100.000 e 200.000. importante ressaltar, antes de comearmos a estudar o comportamento destas implementaes, que, existem alguns fatores que so relevantes para o desempenho dos mesmos, dentre eles: Sistema Operacional e verso do kernel do mesmo A forma como o kernel do sistema trata as thread's geradas pelos processos executados, so relevantes para o comportamento de qualquer software em execuo. Hardware Apesar dos algoritmos aqui analisados terem seu comportamento previsto atravs de um embasamento terico, diferentes implementaes de hardware, em especial a forma como o processador trata a competio de seus recursos pelos diversos processos em execuo no Sistema Operacional, so relevantes para o desempenho das implementaes. Compilador Em todo o nosso estudo, utilizamos a linguagem de programao C. Esta linguagem foi adotada por ser compilada, o que nos permite um ganho considervel no desempenho, pois gera, j na compilao, um cdigo de mquina que se comunica diretamente com o Sistema Operacional ou com o processador, em comparao a linguagens interpretadas, como Java, que possuem um interpretador acima do Sistema Operacional para a interpretao do cdigofonte/executvel. Neste material, foram utilizados: Sistema Operacional: Ubuntu Release 9,04(jaunty) Kernel Linux 2.6.2815generic #49Ubuntu SMP x86_64 GNU/Linux Hardware: Memria: 3,8 GiB Processador: Intel(R) Core(TM)2 Duo CPU T6400 @ 2.00GHz 64 bits Compilador: gcc version 4.3.3 (Ubuntu 4.3.35ubuntu4) Thread model: posix Objetivos

a) Analisar, para cada conjunto de dados(Aleatrio, Crescente e Decrescente), o comportamento(Tamanho n do vetor x Tempo de execuo) de cada algoritmo de ordenao(Bubble

Sort, Selection Sort, Quick Sort e Shell Sort). Para esta tarefa, foram gerados trs grficos que permitem uma melhor visualizao dos resultados obtidos. b) Posteriormente analise destes resultados, ser realizado comparaes dentre os mtodos de ordenao em questo e qual destes apresenta melhor e pior resultado. Apresentao e caracterizao dos mtodos

a) Bubble Sort: O vetor vt percorrido da esquerda para direita e, caso dois elementos adjacentes estejam fora de ordem, so trocados entre s. Desta forma, o menor elemento borbulhado para o incio do vetor. Complexidade: O(n), para todos os casos(Melhor, Pior e Mdio). Observaes: No melhor caso, todos os elementos j esto ordenados, e nenhuma troca necessria. No pior caso, o vetor est em ordem inversa. No caso mdio, o vetor esta ordenador aleatoriamente.

b) Selection Sort/Seleo direta: O elemento k1, com o menor valor no vetor vt selecionado e trocado(swap) com o elemento da primeira posio vt[1], em seguida, o prximo menor valor k2, dentre os elementos restantes, trocado(swap) com a segunda posio do vetor vt[2]. Este processo continua at a posio n-1 do vetor vt. Complexidade: O(n), para todos os casos(Melhor, Pior e Mdio). Observaes: Uma caracterstica importante deste mtodo que, se um elemento k, j esta em sua posio final, ele trocado consigo mesmo, realizando desta forma um passo redundante(no estvel). c) Shell Sort: Divide o vetor original em diversos sub-vetores, parcialmente ordenados. Esta diviso ocorre mediante a comparao dos elementos mais distantes do vetor, depois os mais prximos, at comparar os elementos adjacentes do vetor. Este incremento feito escolhendo um valor k arbitrrio, at ser decrescido em 1. A ordenao quando k = 1 uma ordenao simples. Complexidade: Melhor caso: O(n log2 n) Pior caso: O(n,) Observao: O melhor caso acontece quando temos um incremento timo.

d) Quick Sort: Divide o vetor em dois sub-vetores, o primeiro com os elementos menores ou iguais a um piv k, o segundo com elementos iguais ou maiores que o piv k. O processo de repartio refeito nas duas submatrizes e assim sucessivamente, sendo depois ordenados seus elementos. , por natureza, recursivo. Complexidade: Melhor caso: O(n lg n). Pior caso: O(n). Caso mdio: O(n lg n). Observaes: ou seja, a metade. No melhor caso, o piv tal que a diviso de cada vetor de tamanho n n/2,

No pior caso, os sub-vetores no possuem tamanho aproximadamente n/2, o que aumenta consideravelmente o esforo computacional. O piv , normalmente, o elemento mediano do vetor. inadequado para vetores com menos de dez itens(Cook e Kim, 1980). Descrio dos testes e discusso dos resultados

a) Vetores com conjuntos de dados aleatrios: Inicialmente, analisamos o conjunto de dados aleatrios. Nos resultados obtidos, os mtodos de Bubble Sort e Selection Sort, se mostraram demasiadamente ineficientes, como podemos ver na Tabela A(Tamanho x Tempo em segundos):

Tabela A Aleatrio Bubble Selection Quick Shell 50 500 5000 50000 80000 100000 200000 257.938365 115.747185 0.898037 0.079051 0.000094 0.002625 0.000076 0.001188 0.000045 0.000198 0.000064 0.000191 0.216281 15.913160 40.576431 63.646170 0.096881 6.551771 17.025957 26.445942 0.002277 0.091473 0.185235 0.001968 0.023884 0.037629 0.254122 0.047801

Podemos observar que, para vetores de tamanho n <= 500, todos os algoritmos apresentam resultados satisfatrios para a ordenao de conjuntos de dados aleatrios, entretanto Bubble e Selection Sort so mais lentos que Quick e Shell Sort. J para n = 5000, o algoritmo de Bubble Sort leva mais de 2x o tempo que o Selection Sort e mais de 95x o tempo para o Quick Sort e Shell Sort. Para n > 5000, Bubble e Selection Sort apresentam os piores resultados. As implementaes para Quick e Shell Sort se mostraram consideravelmente mais rpidos que Bubble e Quick Sort. Em Grfico 1, podemos ver mais claramente estes resultados.

Podemos constatar, atravs do grfico e da tabela, que, enquanto Bubble Sort e Selection Sort levam mais de 100 segundos para ordenar os dados, com tamanho n = 200.000, Quick Sort e Shell Sort levam menos de 1 segundo, com Shell Sort sendo a implementao com melhor desempenho e Bubble Sort com pior desempenho. Quick Sort fica na segunda posio em agilidade e Selection Sort em terceira posio. Observao: possvel que o mtodo de Shell Sort tenha apresentado resultados melhores que Quick Sort devido a trs fatores: Recursividade do Quick Sort. A escolha do piv no foi a ideal para o Quick Sort. Bom decremento do Shell Sort. b) Vetores com conjuntos de dados crescentes: Quando o conjunto de dados j esta ordenado de forma crescente, o Selection Sort apresenta o pior desempenho. possvel que isto ocorra devido ao fato de que o algoritmo percorre todo o vetor vrias vezes, trocando todos os elementos, independente do elemento estar na posio correta ou no. Na Tabela B, os dados coletados referentes ao Tempo de execuo em segundos x Tamanho da entrada.

Tabela B Crescente Bubble Quick Shell 50 500 5000 50000 80000 100000 200000 0.001852 108.118970 0.033335 0.024659 0.000067 0.000074 0.000100 0.000061 0.000112 0.000729 0.000502 0.000771 0.000934 6.569720 16.839132 26.305214 0.008050 0.014846 0.017051 0.018109

Selection 0.000066 0.001127 0.087180

0.000058 0.000062 0.000707 0.008540 0.014160

Tambm podemos constatar que, o mtodo de Bubble Sort, apresenta considervel desempenho quando os dados esto ordenados de forma crescente. Acreditamos que isto ocorre pois ,neste algoritmo, quando os dados j esto ordenados, nenhuma troca necessria entre elementos adjacentes, ao contrrio do algoritmo de Selection Sort, que no estvel. Para vetores pequenos(n < 500), todas as implementaes apresentam resultados satisfatrios, entretanto Selection Sort ainda mais lento. Para todos os tamanhos de vetores, Quick Sort e Shell Sort apresentam resultados semelhantes. O mtodo de Bubble Sort apresenta, nesta caso, o desempenho mais rpido, dentre as quatro implementaes. possvel que isto ocorra pois somente simples comparaes so feitas pelo Bubble Sort. No Grfico 2 temos uma representao dos dados coletados.

c) Vetores com conjuntos de dados decrescente: Quando o conjunto de dados est em em ordem decrescente, os mtodos de Bubble Sort e Selection Sort apresentam os piores resultados. A implementao do Bubble Sort o que apresenta o pior desempenho, isto ocorre pois, para o menor elemento, todo o vetor tem de ser trocado(borbulhado) com cada elemento adjacente. Na Tabela C, os dados referentes aos tempos de execuo.

Tabela C Decrescente Bubble Selection Quick Shell 50 0.000086 0.000086 0.000067 0.000061 500 5000 50000 80000 100000 200000 112.102344 0.041573 0.053544 0.002452 0.191775 14.793795 37.814256 58.807854 239.999552 0.001192 0.111265 6.812249 0.000133 0.001322 0.010208 0.000133 0.001004 0.012442 17.462391 27.243300 0.015708 0.021396 0.021805 0.028246

Podemos constatar que o mtodo de Quick Sort o que apresenta o melhor resultado(possivelmente por ter escolhido um bom piv), entretanto seu desempenho muito similar ao mtodo de Shell Sort. Para n <= 500, todos os mtodos apresentam resultados satisfatrios. O segundo pior mtodo o Selection Sort, com tempo de aproximadamente metade do consumido por Bubble Sort. No Grfico 3, podemos constatar o crescimento do tempo em relao ao vetor de dados.

Concluso

Neste material, realizamos a anlise de quatro mtodos de ordenao: Bubble Sort, Selection Sort, Quick Sort e Shell Sort. Os algoritmos foram submetidos uma srie de conjuntos de dados, dispostos de forma aleatria, crescente e decrescente. Para cada tipo de conjunto, os algoritmos possuram desempenhos distintos. O conjunto de dados aleatrio ordenado de forma rpida, quando utilizado o mtodo de Shell Sort e Quick Sort e ordenado de forma consideravelmente lenta, utilizando Bubble Sort e Selection Sort. Quando os dados esto dispostos de forma crescente, o mtodo Selection Sort, apresenta o pior resultado e os algoritmos Quick Sort e Shell Sort so geis e apresentam resultados muito prximos. Neste conjunto de dados, Bubble Sort apresentou um resultado consideravelmente gil, sendo o melhor caso deste algoritmo, em que nenhuma troca entre elementos ocorre, apenas comparaes entre elementos adjacentes. Para o conjunto de dados dispostos de forma decrescente, temos o pior caso dos algoritmos de Selection Sort e Bubble Sort, com o ltimo apresentando o pior resultado, pois necessita mover o ltimo elemento do vetor, para o incio do mesmo. Os mtodos de Quick Sort e Shell Sort, apresentam, neste caso, resultados muito prximos, com o mtodo Quick Sort sendo mais rpido. Podemos concluir afirmando que, para os conjuntos de dados considerados, os mtodos de Bubble Sort e Selection Sort, apresentaram os piores resultados, em comparao mtodos consideravelmente mais geis, como o Quick Sort e Shell Sort. J para conjuntos pequenos, todos possuem bons tempos de execuo. Apesar destas concluses, diferentes implementaes, ambientes de execuo e conjuntos de dados, podem interferir nos resultados, sendo necessrio uma anlise profunda do problema que se deseja tratar, para decidir qual algoritmo implementar.

Bibliografia

Drozdek, Adam. Estruturas de dados e algoritmos em C++. So Paulo: Pioneira Thomson Learning, 2002. ISBN 85-221-0295-3. http://en.wikipedia.org/wiki/Selection_sort http://cprogramminglanguage.net/quicksort-algorithm-c-source-code.aspx http://www.codecodex.com/wiki/Bubble_sort#C http://www.codecodex.com/wiki/Shell_sort Apndices Apndice A: a) Bubble Sort: #include <stdio.h> #include <stdlib.h> #include <time.h> void bubbleSort(int *array, int length) { int i, j, temp; int test; /*use this only if unsure whether the list is already sorted or not*/ for(i = length - 1; i > 0; i--) { test=0; for(j = 0; j < i; j++) { if(array[j] > array[j+1]) /* compare neighboring elements */ { temp = array[j]; /* swap array[j] and array[j+1] */ array[j] = array[j+1]; array[j+1] = temp; test=1; } } /*end for j*/ if(test==0) break; /*will exit if the list is sorted!*/ } /*end for i*/ }/*end bubbleSort*/ double tempo() { struct timeval tv; gettimeofday(&tv,0); return tv.tv_sec + tv.tv_usec/1e6; } int main(){

double t1,t2; int tam; scanf("%d", &tam); int a[tam]; int i; for(i = 0; i < tam; i++ ){ scanf("%d",&a[i]); } t1 = tempo(); printf("Inicio: %lf\t",t1); bubbleSort(a,tam); t2 = tempo(); printf("FIm: %lf\t",t2); printf("Tempo em segundos: %lf\n",t2-t1); } b) Selection Sort: #include <stdio.h> #include <stdlib.h> #include <time.h> void selection_sort(int num[],int t) { int i, j, min; for (i = 0; i < (t-1); i++) { min = i; for (j = (i+1); j < t; j++) { if(num[j] < num[min]) { min = j; } } if (i != min) { int swap = num[i]; num[i] = num[min]; num[min] = swap; } } } double tempo() { struct timeval tv; gettimeofday(&tv,0);

return tv.tv_sec + tv.tv_usec/1e6; } int main(){ double t1,t2; int tam; scanf("%d", &tam); int a[tam]; int i;

for(i = 0; i < tam; i++ ){ scanf("%d",&a[i]); } t1 = tempo(); printf("Inicio: %lf\t",t1); selection_sort(a,tam); t2 = tempo(); printf("FIm: %lf\t",t2); printf("Tempo em segundos: %lf\n",t2-t1); } c) Quick Sort: #include <stdio.h> #include <stdlib.h> #include <time.h> void swap(int *x,int *y) { int temp; temp = *x; *x = *y; *y = temp; } int choose_pivot(int i,int j ) { return((i+j) /2); } void quicksort(int list[],int m,int n) {

int key,i,j,k; if( m < n) { k = choose_pivot(m,n); swap(&list[m],&list[k]); key = list[m]; i = m+1; j = n; while(i <= j) { while((i <= n) && (list[i] <= key)) i++; while((j >= m) && (list[j] > key)) j--; if( i < j) swap(&list[i],&list[j]); } // swap two elements swap(&list[m],&list[j]); // recursively sort the lesser list quicksort(list,m,j-1); quicksort(list,j+1,n); } } void printlist(int list[],int n) { int i; for(i=0;i<n;i++) printf("%d",list[i]); } double tempo() { struct timeval tv; gettimeofday(&tv,0); return tv.tv_sec + tv.tv_usec/1e6; } int main() { int tam; scanf("%d", &tam); int list[tam]; double t1,t2; int i; for(i = 0; i < tam; i++ ){ scanf("%d",&list[i]); }

t1 = tempo(); printf("Inicio: %lf\t",t1); // sort the list using quicksort quicksort(list,0,tam-1); t2 = tempo(); printf("FIm: %lf\t",t2); printf("Tempo em segundos: %lf\n",t2-t1); } d) Shell Sort: #include <stdio.h> #include <stdlib.h> #include <time.h> void shellSort(int numbers[], int array_size) { int i, j, increment, temp; increment = array_size / 2; while (increment > 0) { for (i=0; i < array_size; i++) { j = i; temp = numbers[i]; while ((j >= increment) && (numbers[j-increment] > temp)) { numbers[j] = numbers[j - increment]; j = j - increment; } numbers[j] = temp; } if (increment == 2) increment = 1; else increment = increment * 5 / 11; } } void shell2(int * vet, int size) { int i , j , value; int gap = 1; do { gap = 3*gap+1;

} while(gap < size); do { gap /= 3; for(i = gap; i < size; i++) { value =vet[i]; j = i - gap; while (j >= 0 && value < vet[j]) { vet [j + gap] =vet[j]; j -= gap; } vet [j + gap] = value; } } while ( gap > 1); } double tempo() { struct timeval tv; gettimeofday(&tv,0); return tv.tv_sec + tv.tv_usec/1e6; } int main(){ double t1,t2; int tam; scanf("%d", &tam); int a[tam]; int i;

for(i = 0; i < tam; i++ ){ scanf("%d",&a[i]); } t1 = tempo(); printf("Inicio: %lf\t",t1); shell2(a,tam); t2 = tempo(); printf("FIm: %lf\t",t2); printf("Tempo em segundos: %lf\n",t2-t1); }

Apndice B: Comandos executados: O comando cat l o arquivo .txt e repassa( | ) o contedo para servir de entrada para o programa de ordenao. a) Tamanho n = 50: Comando: cat Relatorios/50/crescente50.txt | ./tbubble Inicio: 1260489993.890679 FIm: 1260489993.890746 Comando: cat Relatorios/50/crescente50.txt | ./tselection Inicio: 1260489998.710314 FIm: 1260489998.710380 Comando: cat Relatorios/50/crescente50.txt | ./tquick Inicio: 1260490006.248304 FIm: 1260490006.248365 Comando: cat Relatorios/50/crescente50.txt | ./tshell Inicio: 1260490009.519560 FIm: 1260490009.519618 Comando: Comando: cat Relatorios/50/decrescente50.txt| ./tbubble Inicio: 1260490056.895999 FIm: 1260490056.896085 Comando: cat Relatorios/50/decrescente50.txt| ./tselection Inicio: 1260490059.255349 FIm: 1260490059.255435 Comando: cat Relatorios/50/decrescente50.txt| ./tquick Inicio: 1260490065.204200 FIm: 1260490065.204267 Comando: cat Relatorios/50/decrescente50.txt| ./tshell Inicio: 1260490068.075178 FIm: 1260490068.075239 Comando: cat Relatorios/50/random50.txt| ./tbubble Inicio: 1260490107.159287 FIm: 1260490107.159381 Comando: cat Relatorios/50/random50.txt| ./tselection Inicio: 1260490111.289916 FIm: 1260490111.289992 Comando: cat Relatorios/50/random50.txt| ./tquick Inicio: 1260490115.141489 FIm: 1260490115.141534 Comando: cat Relatorios/50/random50.txt| ./tshell Inicio: 1260490117.654245 FIm: 1260490117.654309 Tempo em segundos: 0.000067 Tempo em segundos: 0.000066 Tempo em segundos: 0.000061 Tempo em segundos: 0.000058

Tempo em segundos: 0.000086 Tempo em segundos: 0.000086 Tempo em segundos: 0.000067 Tempo em segundos: 0.000061

Tempo em segundos: 0.000094 Tempo em segundos: 0.000076 Tempo em segundos: 0.000045 Tempo em segundos: 0.000064

b) Tamanho n = 500: Comando: cat Relatorios/500/crescente500.txt | ./tbubble Inicio: 1260490166.656880 FIm: 1260490166.656954 Tempo em segundos: 0.000074 Comando: cat Relatorios/500/crescente500.txt | ./tselection Inicio: 1260490171.024172 FIm: 1260490171.025299 Tempo em segundos: 0.001127 Comando: cat Relatorios/500/crescente500.txt | ./tquick Inicio: 1260490178.489828 FIm: 1260490178.489940 Tempo em segundos: 0.000112

Comando: cat Relatorios/500/crescente500.txt | ./tshell Inicio: 1260490181.205970 FIm: 1260490181.206032

Tempo em segundos: 0.000062

Comando: cat Relatorios/500/decrescente500.txt | ./tbubble Inicio: 1260490209.125423 FIm: 1260490209.127875 Tempo em segundos: 0.002452 Comando: cat Relatorios/500/decrescente500.txt | ./tselection Inicio: 1260490226.638115 FIm: 1260490226.639307 Tempo em segundos: 0.001192 Comando: cat Relatorios/500/decrescente500.txt | ./tquick Inicio: 1260490229.440508 FIm: 1260490229.440641 Tempo em segundos: 0.000133 Comando: cat Relatorios/500/decrescente500.txt | ./tshell Inicio: 1260490231.996441 FIm: 1260490231.996574 Tempo em segundos: 0.000133 Comando: cat Relatorios/500/random500.txt | ./tbubble Inicio: 1260490266.414686 FIm: 1260490266.417311 Comando: cat Relatorios/500/random500.txt | ./tselection Inicio: 1260490270.919343 FIm: 1260490270.920531 Comando: cat Relatorios/500/random500.txt | ./tquick Inicio: 1260490274.282437 FIm: 1260490274.282635 Comando: cat Relatorios/500/random500.txt | ./tshell Inicio: 1260490276.867950 FIm: 1260490276.868141 c) Tamanho n = 5.000: Comando: cat Relatorios/5000/crescente5000.txt | ./tbubble Inicio: 1260490348.396327 FIm: 1260490348.396427 Tempo em segundos: 0.000100 Comando: cat Relatorios/5000/crescente5000.txt | ./tselection Inicio: 1260490358.470834 FIm: 1260490358.558014 Tempo em segundos: 0.087180 Comando: cat Relatorios/5000/crescente5000.txt | ./tquick Inicio: 1260490361.905455 FIm: 1260490361.906184 Tempo em segundos: 0.000729 Comando: cat Relatorios/5000/crescente5000.txt | ./tshell Inicio: 1260490364.349832 FIm: 1260490364.350539 Tempo em segundos: 0.000707 Comando: cat Relatorios/5000/decrescente5000.txt | ./tbubble Inicio: 1260490417.617397 FIm: 1260490417.809172 Tempo em segundos: 0.191775 Comando: cat Relatorios/5000/decrescente5000.txt | ./tselection Inicio: 1260490430.579436 FIm: 1260490430.690701 Tempo em segundos: 0.111265 Comando: cat Relatorios/5000/decrescente5000.txt | ./tquick Inicio: 1260490434.466069 FIm: 1260490434.467391 Tempo em segundos: 0.001322 Comando: cat Relatorios/5000/decrescente5000.txt | ./tshell Inicio: 1260490437.129945 FIm: 1260490437.130949 Tempo em segundos: 0.001004 Comando: cat Relatorios/5000/Random5000.txt | ./tbubble Inicio: 1260490461.747511 FIm: 1260490461.963792 Tempo em segundos: 0.216281 Comando: cat Relatorios/5000/Random5000.txt | ./tselection Inicio: 1260490465.264614 FIm: 1260490465.361495 Tempo em segundos: 0.096881 Comando: cat Relatorios/5000/Random5000.txt | ./tquick

Tempo em segundos: 0.002625 Tempo em segundos: 0.001188 Tempo em segundos: 0.000198 Tempo em segundos: 0.000191

Inicio: 1260490468.270736 FIm: 1260490468.273013 Comando: cat Relatorios/5000/Random5000.txt | ./tshell Inicio: 1260490471.031040 FIm: 1260490471.033008 d) Tamanho n = 50.000:

Tempo em segundos: 0.002277 Tempo em segundos: 0.001968

Comando: cat Relatorios/50000/crescente50000.txt | ./tbubble Inicio: 1260490536.503015 FIm: 1260490536.503517 Tempo em segundos: 0.000502 Comando: cat Relatorios/50000/crescente50000.txt | ./tselection Inicio: 1260490538.901245 FIm: 1260490545.470965 Tempo em segundos: 6.569720 Comando: cat Relatorios/50000/crescente50000.txt | ./tquick Inicio: 1260490551.346248 FIm: 1260490551.354298 Tempo em segundos: 0.008050 Comando: cat Relatorios/50000/crescente50000.txt | ./tshell Inicio: 1260490555.463059 FIm: 1260490555.471599 Tempo em segundos: 0.008540 Comando: cat Relatorios/50000/decrescente50000.txt | ./tbubble Inicio: 1260490598.933496 FIm: 1260490613.727291 Tempo em segundos: 14.793795 Comando: cat Relatorios/50000/decrescente50000.txt | ./tselection Inicio: 1260490617.530363 FIm: 1260490624.342612 Tempo em segundos: 6.812249 Comando: cat Relatorios/50000/decrescente50000.txt | ./tquick Inicio: 1260490628.696032 FIm: 1260490628.706240 Tempo em segundos: 0.010208 Comando: cat Relatorios/50000/decrescente50000.txt | ./tshell Inicio: 1260490631.625430 FIm: 1260490631.637872 Tempo em segundos: 0.012442 Comando: cat Relatorios/50000/random50000.txt | ./tbubble Inicio: 1260490660.409557 FIm: 1260490676.322717 Tempo em segundos: 15.913160 Comando: cat Relatorios/50000/random50000.txt | ./tselection Inicio: 1260490679.530885 FIm: 1260490686.082656 Tempo em segundos: 6.551771 Comando: cat Relatorios/50000/random50000.txt | ./tquick Inicio: 1260490694.534837 FIm: 1260490694.626310 Tempo em segundos: 0.091473 Comando: cat Relatorios/50000/random50000.txt | ./tshell Inicio: 1260490697.769186 FIm: 1260490697.793070 Tempo em segundos: 0.023884 e) Tamanho n = 80.000: Comando: cat Relatorios/80000/crec80000.txt | ./tbubble Inicio: 1260490745.788191 FIm: 1260490745.788962 Tempo em segundos: 0.000771 Comando: cat Relatorios/80000/crec80000.txt | ./tselection Inicio: 1260490750.513569 FIm: 1260490767.352701 Tempo em segundos: 16.839132 Comando: cat Relatorios/80000/crec80000.txt | ./tquick Inicio: 1260490771.001098 FIm: 1260490771.015944 Tempo em segundos: 0.014846 Comando: cat Relatorios/80000/crec80000.txt | ./tshell Inicio: 1260490773.464345 FIm: 1260490773.478505 Tempo em segundos: 0.014160 Comando: cat Relatorios/80000/dec80000.txt | ./tbubble Inicio: 1260490792.428986 FIm: 1260490830.243242 Tempo em segundos: 37.814256 Comando: cat Relatorios/80000/dec80000.txt | ./tselection

Inicio: 1260490837.951149 FIm: 1260490855.413540 Comando: cat Relatorios/80000/dec80000.txt | ./tquick Inicio: 1260490859.474918 FIm: 1260490859.490626 Comando: cat Relatorios/80000/dec80000.txt | ./tshell Inicio: 1260490861.815001 FIm: 1260490861.836397

Tempo em segundos: 17.462391 Tempo em segundos: 0.015708 Tempo em segundos: 0.021396

Comando: cat Relatorios/80000/rand80000.txt | ./tbubble Inicio: 1260490886.272008 FIm: 1260490926.848439 Tempo em segundos: 40.576431 Comando: cat Relatorios/80000/rand80000.txt | ./tselection Inicio: 1260490933.289071 FIm: 1260490950.315028 Tempo em segundos: 17.025957 Comando: cat Relatorios/80000/rand80000.txt | ./tquick Inicio: 1260490957.474428 FIm: 1260490957.659663 Tempo em segundos: 0.185235 Comando: cat Relatorios/80000/rand80000.txt | ./tshell Inicio: 1260490960.402089 FIm: 1260490960.439718 Tempo em segundos: 0.037629 f) Tamanho n = 100.000: Comando: cat Relatorios/100000/crec100000.txt | ./tbubble Inicio: 1260490996.338994 FIm: 1260490996.339928 Tempo em segundos: 0.000934 Comando: cat Relatorios/100000/crec100000.txt | ./tselection Inicio: 1260491004.636416 FIm: 1260491030.941630 Tempo em segundos: 26.305214 Comando: cat Relatorios/100000/crec100000.txt | ./tquick Inicio: 1260491066.795959 FIm: 1260491066.813010 Tempo em segundos: 0.017051 Comando: cat Relatorios/100000/crec100000.txt | ./tshell Inicio: 1260491070.029182 FIm: 1260491070.047291 Tempo em segundos: 0.018109 Comando: cat Relatorios/100000/dec100000.txt | ./tbubble Inicio: 1260491096.855025 FIm: 1260491155.662879 Tempo em segundos: 58.807854 Comando: cat Relatorios/100000/dec100000.txt | ./tselection Inicio: 1260494869.435586 FIm: 1260494896.678886 Tempo em segundos: 27.243300 Comando: cat Relatorios/100000/dec100000.txt | ./tquick Inicio: 1260494942.750771 FIm: 1260494942.772576 Tempo em segundos: 0.021805 Comando: cat Relatorios/100000/dec100000.txt | ./tshell Inicio: 1260494948.859603 FIm: 1260494948.887849 Tempo em segundos: 0.028246 Comando: cat Relatorios/100000/rand100000.txt | ./tbubble Inicio: 1260494977.889461 FIm: 1260495041.535631 Tempo em segundos: 63.646170 Comando: cat Relatorios/100000/rand100000.txt | ./tselection Inicio: 1260495080.029516 FIm: 1260495106.475458 Tempo em segundos: 26.445942 Comando: cat Relatorios/100000/rand100000.txt | ./tquick Inicio: 1260495151.500867 FIm: 1260495151.754989 Tempo em segundos: 0.254122 Comando: cat Relatorios/100000/rand100000.txt | ./tshell Inicio: 1260495155.380295 FIm: 1260495155.428096 Tempo em segundos: 0.047801 g) Tamanho n = 200.000: Comando: cat Relatorios/200000/cresc200000.txt | ./tbubble Inicio: 1260497527.561960 FIm: 1260497527.563812 Tempo em segundos: 0.001852 Comando: cat Relatorios/200000/cresc200000.txt | ./tselection

Inicio: 1260497532.675347 FIm: 1260497640.794317 Tempo em segundos: 108.118970 Comando: cat Relatorios/200000/cresc200000.txt | ./tquick Inicio: 1260497729.781380 FIm: 1260497729.814715 Tempo em segundos: 0.033335 Comando: cat Relatorios/200000/cresc200000.txt | ./tshell Inicio: 1260497732.686712 FIm: 1260497732.711371 Tempo em segundos: 0.024659 Comando: cat Relatorios/200000/dec200000.txt | ./tbubble Inicio: 1260497760.933078 FIm: 1260498000.932630 Tempo em segundos: 239.999552 Comando: cat Relatorios/200000/dec200000.txt | ./tselection Inicio: 1260498017.094631 FIm: 1260498129.196975 Tempo em segundos: 112.102344 Comando: cat Relatorios/200000/dec200000.txt | ./tquick Inicio: 1260499039.737540 FIm: 1260499039.779113 Tempo em segundos: 0.041573 Comando: cat Relatorios/200000/dec200000.txt | ./tshell Inicio: 1260499042.409708 FIm: 1260499042.463252 Tempo em segundos: 0.053544

Comando: cat Relatorios/200000/rand200000.txt | ./tbubble Inicio: 1260497023.900783 FIm: 1260497281.839148 Tempo em segundos: 257.938365 Comando: cat Relatorios/200000/rand200000.txt | ./tselection Inicio: 1260497317.062229 FIm: 1260497432.809414 Tempo em segundos: 115.747185 Comando: cat Relatorios/200000/rand200000.txt | ./tquick Inicio: 1260497464.263662 FIm: 1260497465.161699 Tempo em segundos: 0.898037 Comando: cat Relatorios/200000/rand200000.txt | ./tshell Inicio: 1260497473.764681 FIm: 1260497473.843732 Tempo em segundos: 0.079051 Este material est protegido pela Licena Jurdica Creative Commons(Atribuio-Uso nocomercial 3.0 Brasil). A licena est disponvel em: http://creativecommons.org/licenses/by-nc/3.0/ br/legalcode. Licena Jurdica Creative Commons Atribuio-Uso no-comercial 3.0 Brasil

You might also like