miércoles, 3 de julio de 2013

Códigos del método de QuickSort


:::::::::::::::::::::::::::::::::::::::::::

ORDENACION NUMEROS

:::::::::::::::::::::::::::::::::::::::::::



#include<stdio.h>
#include<conio.h>
void quicksort(int x[],int prim,int ult);
int main()
{ int tam,i;
  printf(":::::::::::::Quick Sort:::::::::::::\n\n");
  printf("\tDigita cuantos numeros deseas ordenar: ");
  scanf("%d",& tam);
  int x[tam];
  printf("\n\nIntroduce %d valores: \n",tam);
  for(i=0;i<tam;i++)
scanf("%d",&x[i]);
  quicksort(x,0,tam-1);
  printf("\t\nValores Ordenados: \n");
  for(i=0;i<tam;i++)
printf(" %d",x[i]);
  getch();
  return 0;
}

void quicksort(int x[],int prim,int ult)
{  int pivot,j,temp,i;
   if(prim<ult)
   {   pivot=prim;
       i=prim;
       j=ult;
       while(i<j)
       {   while(x[i]<= x[pivot]&& i<ult)
              i++;
      while(x[j]>x[pivot])
         j--;
  if(i<j)
           {   temp=x[i];
  x[i]=x[j];
  x[j]=temp;
  }
       }
       temp=x[pivot];
       x[pivot]=x[j];
       x[j]=temp;
       quicksort(x,prim,j-1);
       quicksort(x,j+1,ult);
   }
}




:::::::::::::::::::::::::::::::::::::::::::::::::::::::

ORDENACION CADENAS

:::::::::::::::::::::::::::::::::::::::::::::::::::::::



#include <stdio.h>
#include <string.h>
void quicksort(char nombre[15][15],int izquierda,int derecha)
{
     int i,j;
     char y[15],*x;
     i=izquierda;
     j=derecha;
     x=nombre[(izquierda+derecha)/2];
     do{
        while((strcmp(nombre[i],x)<0) && (i<derecha)) i++;
        while((strcmp(nombre[j],x)>0) && (j>izquierda)) j--;
        if(i<=j)
        {
           strcpy(y,nombre[i]);
           strcpy(nombre[i],nombre[j]);
           strcpy(nombre[j],y);
           i++;
           j--;
        }
     }while(i<=j);
     if(izquierda<j) quicksort(nombre,izquierda,j);
     if(i<derecha) quicksort(nombre,i,derecha);
}
int main()
{
    char nombre[15][15];
    int n,i,izquierda,derecha,respuesta;
    do
    {
        printf("\nCuantos nombres deseas ordenar:\n ");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
           printf("Introduzca el nombre de la persona %d: ",i+1);
           scanf("%s",nombre[i]);
        }
        izquierda=0;
        derecha=n-1;
        quicksort(nombre,izquierda,derecha);
        printf("Los nombres en orden alfabetico:\n");
        for(i=0;i<n;i++)
           printf("\n %d.-%s",i+1,nombre[i]);
        printf("\nEjecutar programa de nuevo? (SI = 1 y NO = 0)\n");
        scanf("%d",&respuesta);
    }while(respuesta==1);
    return 0;
}


No hay comentarios:

Publicar un comentario