Angel*** 0 Denunciar post Postado Abril 11, 2008 Boa Noite!! Estou fazendo um trabalho referente a métodos de ordenação em C++ Vamos pegar o método bolha para exemplo: Como faço pra mostrar quantas trocas foram feitas e quanto tempo demorou?? Poderiam me ajudar?? Obrigada!! Segue o método bolha: #include<stdio.h> #include<conio.h> #include<stdlib.h> void main(void) { int vet[50],x,y,aux,qtde,*p,ord; printf("1-Crescente 2-Decrescente\n"); scanf("%d",&ord); printf("quantas posicoes?"); scanf("%d",&qtde); p=(int*)malloc(sizeof(int)*qtde); if(!p){ printf("erro"); exit(1); } x=0; randomize(); for(x=0;x<qtde;x++) p[x]=random(1000); for(x=0;x<qtde;x++) printf(" %d",p[x]); for(y=qtde;y>0;y--) { for(x=0;x-1<y-1;x++) { if(ord==1) { if(p[x]>p[x+1]) { aux=p[x+1]; p[x+1]=p[x]; p[x]=aux; } } else { if(p[x]<p[x+1]) { aux=p[x+1]; p[x+1]=p[x]; p[x]=aux; } } } } printf("\n\n"); for(x=0;x<qtde;x++) printf(" %d",p[x]); } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 11, 2008 bom em relação a qnts trocas foram feitas é soh você usar uma variavel acumuladora a kd troca incrementa 1 agora em relação ao tempo nunca fiz nd do tipo + pesquisei pra você e achei isso: http://www.vivaolinux.com.br/comunidades/v...;codtopico=4185 http://www.descobre.com/forum/showthread.php?t=1260 []'s volte a postar! Compartilhar este post Link para o post Compartilhar em outros sites
Angel*** 0 Denunciar post Postado Abril 11, 2008 bom em relação a qnts trocas foram feitas é soh você usar uma variavel acumuladora a kd troca incrementa 1 agora em relação ao tempo nunca fiz nd do tipo + pesquisei pra você e achei isso: http://www.vivaolinux.com.br/comunidades/v...;codtopico=4185 http://www.descobre.com/forum/showthread.php?t=1260 []'s volte a postar! OI! muito obrigada! na verdade eu vou fazer vários metodos de ordanação, e depois de 'limpar' a tela vou mostrar todos os metodos e quantas trocas cada um executou por isso acho que terei que criar um vetor para gravar o resultado de cada troca... mas estou um pouco perdida... se você puder me ajuda agradeço!! segue o codigo (alguns cases eu ainda não fiz!) #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> int main () { int j,aux,*p=NULL,qtde,opc,x,y, v[100]; printf("\n\n\t\t .:Metodos de Ordenacao:. \n\n"); //menu de opçoes printf("\t1-Gerar Vetor\n\t2-Metodo Bolha\n\t3-Seleçao\n\t4-Inserçao\n\t5-Shell Sort\n\t6-Quick Sort\n\t7-Resultados\n\t8-Encerrar"); int trocas=0; do { printf("\n\n\tInforme a opçao:\n\t"); scanf("%d",&opc); if(opc>8||opc<1) { printf("Favor selecionar uma opção do menu."); printf("\n"); }//if else { switch(opc) { case 1: //Gera o vetor com o numero de posiçoes escolhida printf("\tInforme o numero posicoes?\n"); scanf("%d",&qtde); if(p != NULL){ free(p); } //if p=(int*)malloc(sizeof(int)*qtde); if(!p) { printf("erro"); exit(1); } //if x=0; srand(time(NULL)); for(x=0;x<qtde;x++) p[x]=rand()%1000; for(x=0;x<qtde;x++) printf(" %d",p[x]); break; case 2: //Metodo Bolha x=0; for(y=qtde;y>0;y--) { for(x=0;x-1<y-1;x++) { if(p[x]>p[x+1]) { aux=p[x+1]; p[x+1]=p[x]; p[x]=aux; trocas = trocas +1; } // if } //for } // for printf("\n\n"); for(x=0;x<qtde;x++) { printf(" %d",p[x]); }//for break; case 3: //Selecao direta printf("\tNao disponivel\n"); break; case 4: //Insercao Direta for (int i=1;i<qtde;i++) { aux=v[i]; j=(i-1); while(j>=0 && v[j]>aux) { v[j+1] = v[j]; trocas = trocas +1; j--; } //while v[j+1] = aux; } //for break; case 5: //Shell Sort printf("\t Nao disponivel\n"); break; case 6://Quick Sort printf("\t Nao disponivel\n"); break; case 7: //Mostrar resultados das operações system("cls"); printf("\n\t .:Resultados:.\n\n\n"); printf("trocas: %d \n\n\n", trocas); system("pause"); opc = 8; break; case 8: //sair system("cls"); break; }//switch }//else }//do while(opc!=8); if(p != NULL) free(p); }//main Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 12, 2008 olha o comecinho do seu código eu mudei um poquinho e veja: int main () { int j,aux,p[100],*q=NULL,qtde,opc,x,y, v[100]; printf("\n\n\t\t .:Metodos de Ordenacao:. \n\n"); //menu de opçoes printf("\t1-Gerar Vetor\n\t2-Metodo Bolha\n\t3-Seleçao\n\t4-Inserçao\n\t5-Shell Sort\n\t6-Quick Sort\n\t7-Resultados\n\t8-Encerrar"); int trocas=0; do { printf("\n\n\tInforme a opçao:\n\t"); scanf("%d",&opc); switch(opc) { case 1: //Gera o vetor com o numero de posiçoes escolhida printf("\tInforme o numero posicoes?\n"); scanf("%d",&qtde); if(q != NULL){ free(q); } //if q=(int*)malloc(sizeof(int)*qtde); if(!q) { printf("erro"); exit(1); } //if x=0; srand(time(NULL)); for(x=0;x<qtde;x++) p[x]=rand()%1000; for(x=0;x<qtde;x++) printf(" %d",p[x]); break; case 2: //Metodo Bolha x=0; for(y=qtde;y>0;y--) for(x=0;x-1<y-1;x++) if(p[x]>p[x+1]) { aux=p[x+1]; p[x+1]=p[x]; p[x]=aux; trocas = trocas +1; } printf("\n\n"); for(x=0;x<qtde;x++) printf(" %d",p[x]); break; []'s Compartilhar este post Link para o post Compartilhar em outros sites