sábado, 23 de noviembre de 2013

Metodos de Ordenamiento "Quicksort"

#include <stdio.h>
 
 void qs(int lista[],int limite_izq,int limite_der)
 {
     int izq,der,temporal,pivote;
 
     izq=limite_izq;
     der = limite_der;
     pivote = lista[(izq+der)/2];
 
     do{
         while(lista[izq]<pivote && izq<limite_der)izq++;
         while(pivote<lista[der] && der > limite_izq)der--;
         if(izq <=der)
         {
             temporal= lista[izq];
             lista[izq]=lista[der];
             lista[der]=temporal;
             izq++;
             der--;
 
         }
 
     }while(izq<=der);
     if(limite_izq<der){qs(lista,limite_izq,der);}
     if(limite_der>izq){qs(lista,izq,limite_der);}

 }
 
 void quicksort(int lista[],int n)
{
     qs(lista,0,n-1);
 }
 
 int main(int argc, const char * argv[])
 {
  system("COLOR 1F");
  system("TITLE QUICKSORT");
     int lista[10];
     int size = sizeof(lista)/sizeof(int);
  int i;
  for (i=0;i<=9;i++)
  {
   printf("\ndame un numero para asignarlo a la posocion numero %i:\n", i+1);
   scanf("%i", & lista[i]);
  }
  printf("el arreglo tiene los siguientes valores:\n");
  for(i=0;i<=9;i++)
  {
   printf("%i |", lista[i]);
  }
  printf("\npulse una tecla para continuar");
  getch();
     printf("\n");
     quicksort(lista,size);
  printf("el arreglo tiene los siguientes valores:\n");
  for(i=0;i<=9;i++)
  {
   printf("%i |", lista[i]);
  }
  printf("\npulse una tecla para continuar");
  getch();
     return 0;
 }

No hay comentarios:

Publicar un comentario