Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda em métodos de pesquisa e ordenação


zennom

Pergunta

Boa noite pessoal,

estudo ciência da computação e estou na modalidade do curso  em C que estuda métodos de pesquisa e ordenação, porém meu professor não sabe explicar muito bem e estou com muita dificuldade para entender os algoritmos (bubble sort, quicksort e etc). Poderiam me ajudar com essas perguntas? Vi alguns vídeos no youtube mas também fiquei com dificuldades.

 

 

Qual método de ordenação gasta mais tempo para classificar o conjunto de dados?
O método Bubble Sort, pois consome tempo e processamento. (de acordo com o que eu entendi pelo meu professor seria o método bubble sort)


Qual método de ordenação gasta menos tempo para classificar o conjunto de dados?
O Quicksort é um método de ordenação mais rápido e eficiente. (e o método mais rápido o quicksort)


Por que para algumas quantidade de valores, o quicksort teve o tempo zerado. Isso era esperado? Explique!

 

a)Qual é a chamada para executar o método quick sort? Escreva a instrução.

b)Como é escolhido o elemento pivô?

c)Após a primeira partição do vetor, como ficarão as duas chamadas dentro da função quicksort()?

d)Quantas chamadas ao método quicksort() ocorrerão?

 

Segue um código que meu professor passou e pediu para explicarmos o porquê de algumas coisas, mas tentei rodar ele no DEVC++ e não consigo entender!!

	#include<stdio.h>
#include<time.h>
#define MAX 10
	void aleatorio();
void exibir();
void quicksort(int e,int d);
int a[MAX];
main(){
    aleatorio();
    printf("\nVetor gerado\n");
    exibir();
    system("pause");
    quicksort(0,MAX-1);
    printf("\n\nVetor ordenado\n");
    exibir();
}
void exibir(){
    int i;
    for(i=0;i<MAX;i++)
     printf("a[%d]=%d\n",i,a[i]);
}
void aleatorio(){
    int i;
    srand(time(NULL));
    for(i=0;i<MAX;i++)
     a[i]=rand()%MAX;
}
void quicksort(int e,int d){  
    int i;
    if(d>e){
         i=particao(e,d); /* Particionando o vetor */
               quicksort(e,i-1);
              quicksort(i+1,d);
       }
}
	
int particao(int e,int d){
int v,i,j,t;
  v=a[d];   
  i=e-1;   
  j=d;
  do{  
    do{
                 i=i+1; /* Procura o maior*/
        }while ((a[i]<v) &&  (i<d));
     do{
             j=j-1; /* Procura o menor*/
        } while ((a[j]>v) && (j>0));
    
         t=a[i];  
        a[i]=a[j];
        a[j]=t;
  } while (j > i);
// colocando o pivo a[d] em seu lugar
    a[j]=a[i];  
    a[i]=a[d];
    a[d]=t;
    return i;
}
	
Editado por zennom
codigo não identado
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...