Ordenação quicksort

Publicado por david sousa mota (última atualização em 20/10/2010)

[ Hits: 12.860 ]

Download problema5.c




Lista aleatória e método de ordenação quicksort na forma decrescente.

  



Esconder código-fonte

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int aleatorio(int **p,int quantidade);
void quick_sort(int lista[],int tamanho);
void quick(int lista[],int esquerdo,int direito);

int main(){
  int lista[10];
    int *p;
    int contador;
    p = lista;
    aleatorio(&p,10);
     for(contador=0;contador<10;contador++){
        printf("%i\n",lista[contador]);
    }
  printf("\n\n");
        quick_sort(lista,10);
  for(contador=0;contador<10;contador++){
        printf("%i\n",lista[contador]);
    }
system("pause");    
return 0;
}
int aleatorio(int **p, int quantidade){
 
     struct tm *ptr;
     time_t lt;
     lt = time(NULL);
     ptr = gmtime(<);
     int conta;
     int b=10;
     for(conta=0;conta<=quantidade;conta++){
        if(conta%2 != 0){
         *p = ((int *)(ptr->tm_sec)) + b*quantidade*conta;
          p++;
          b+=10;
         }else
         {
         *p = ((int *)(ptr->tm_sec)) + b*quantidade*2*conta;
           p++;
         b+=-5;
         }
    }

}
void quick_sort(int lista[],int tamanho)
{   
    quick(lista,0,tamanho-1);
}
void quick(int lista[],int esquerdo,int direito)
{     
  register int i,j;
       int x,y;
       i = esquerdo; 
       j = direito;
       x = lista[(esquerdo+direito)/2];
       do{
           while(lista[i]>x && i<direito) i++;
           while(x>lista[j] && j>esquerdo) j--;
           if(i<=j){
              y = lista[i];
              lista[i] = lista[j];
              lista[j] = y;
              i++; 
              j--;
                       }
              }while(i<=j);
              if(esquerdo<j) quick(lista,esquerdo,j);
              if(i<direito) quick(lista,i,direito);     
}

Scripts recomendados

Cálculo de logaritmo de um número por Série de Taylor em C

Calculadora em C++

Memória compartilhada, semáforo e criação de processos

Calculando PI usando série de Leibniz

Agenda eletrônica feita em C


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts