marolly 0 Denunciar post Postado Maio 28, 2011 estou tentando colocar tempo de ordenação mesmo programa, mas esta mostrando como tempo 0 de ordenação. nao sei oq fazer mais se alguem poder me ajudar agradeço desde ja. #include <stdio.h> #include <string.h> #include <time.h> #include <stdlib.h> void bubble(char *item, int count); void select(char *item, int count); void shell(char *tem,int count); void quick(char *item, int count); void qs(char *item,int left,int right); int main(void) { int opcao; clock_t inicio, fim; char s[500]; printf("\n ******** Trabalho Programacao Estruturada *********\n\n"); do { printf("\n Digite a Sequencia de Caracteres (Numeros ou String) a ser Ordenado: \n\n"); scanf("%s", &s ); printf("\n1 - Bubble Sort\n"); printf("2 - Select Sort\n"); printf("3 - Shell Sort\n"); printf("4 - Quick Sort\n"); printf("0 - Sair\n"); printf("\n Qual metodo a ser ordenado: "); scanf("%d", &opcao); switch (opcao) { case 1: { inicio = clock(); bubble(s, strlen(s)); fim = clock(); printf("\n Ordenados pelo metodo Bubble Sort: %s\n",s); printf("\nO Tempo Gasto eh de: %ld\n",(fim - inicio)); break; } case 2: { inicio = clock(); select(s, strlen(s)); fim = clock(); printf("\n Ordenados pelo metodo Selection Sort: %s\n",s); printf("\nO Tempo Gasto eh de: %ld\n",(fim - inicio)); break; } case 3: { inicio = clock(); shell(s, strlen(s)); fim = clock(); printf("\n Ordenados pelo metodo Shell Sort: %s", s); printf("\nO Tempo Gasto eh de: %ld\n",(fim - inicio)); break; } case 4: { inicio = clock(); quick(s, strlen(s)); fim = clock(); printf("\n Ordenados pelo metodo Quick Sort: %s\n",s); printf("\nO Tempo Gasto eh de: %ld\n",(fim - inicio)); break; } case 0: { exit(0); } } } while ( opcao != 5 ); } // A ordenação por Bubble Sort // void bubble(char *item, int count) { register int a,b; register char t; for (a=1;a<count;++a) for(b=count-1;b>=a; --B){ if (item[b-1] > item[b]) { t=item[b-1]; item[b-1]=item[b]; item[b]=t; } } } // ordenação por Selection Sort // void select(char *item, int count) { register int a,b,c; int exchange; char t; for(a=0;a<count-1;++a) { exchange=0; c=a; t=item[a]; for (b=a+1; b<count;++B){ if (item[b]<t){ c=b; t=item[b]; exchange=1; } } if (exchange){ item[c]=item[a]; item[a]=t; } } } // Ordenação por Shell Sort // void shell(char * a, int n) { int i,j,x; int h=1; do {h=h*3+1;} while (h<n); do { h/=3; for(i=h;i<n;i++) { x=a[i]; j=i-h; while(j>=0 && x<a[j]) { a[j+h]=a[j]; j-=h; } a[j+h]=x; } }while(h>1); } // Ordenação por Quick Sort // //função inicial // void quick(char *item, int count) { qs(item,0,count-1); } void qs(char *item,int left,int right) { register int i,j; char x,y; i=left;j=right; x=item[(left+right)/2]; do{ while(item[i]<x && i<right) i++; while(x<item[j] && j>left) j--; if (i<=j){ y=item[i]; item[i]=item[j]; item[j]=y; i++;j--; } } while(i<=j); if (left<j) qs(item,left,j); if (i<right) qs(item,i,right); } Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Maio 29, 2011 Bem-vindo ao fórum e obrigado por usar a tag "code". Por favor, crie títulos menos vagos para seus posts. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Alano 0 Denunciar post Postado Junho 1, 2011 Não sei se estou errado (aqui é um fórum de discussão, então vou falar), mas eu acho que a utilização do DO é antiga e "errada". Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Junho 1, 2011 Não sei se estou errado (aqui é um fórum de discussão, então vou falar), mas eu acho que a utilização do DO é antiga e "errada". Não. É certíssima e até recomendada em alguns casos, mas, como são pouquíssimos, é pouco utilizado. Só isso. Nâo é antigo. Afinal, se você precisa de um loop que execute AO MENOS uma vez, é muito melhor usar do-while() do que um while(), pois ganha-se desempenho, já que o while() vai checar sua condição antes, mesmo que tenha-se que executar o loop uma vez pelo o menos, enquanto o do-while() só vai checar o necessário, no caso. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites