martes, 26 de noviembre de 2013

Programa 15: Quick Sort. Fernando Mtz R

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


int quicksort(int num[], int inf, int sup, int n)
{

    int izq, k, der,med,x;
    izq=inf;         
    der=sup;      
    med=num[(izq+der)/2];       

    do
    {
        while (num[izq] < med && izq < sup )    
            izq++;
        while (med < num[der] && der > inf )    
            der--;
            
        if (izq <= der)
        {
            x = num[izq];
            num[izq]=num[der];
            num[der]=x;
            izq++; 
            der--;
        }
    }while(izq<=der); 
    
    
    for(k=0;k<n;k++)
        printf("%i  ",num[k]);

    printf("\n\n");
    
    
    if (inf < der)   
        quicksort(num,inf,der,n);
    if (izq < sup)  
        quicksort(num,izq,sup,n);
}



main ()
{
    int n,i,*num,inf,sup;
    
    printf("\n\n  Cuantos elementos habra en el arreglo:   ");
    scanf("%d",&n);
    num=(int *)malloc(sizeof(int)*n);

    
    //Llenar arreglo
    system("cls");
    for(i=0;i<n;i++)
    {
        printf("\n\n  Dame el elemento #%d del arreglo: ",i);
        scanf("%d",&num[i]);
    }
    
    inf=0;
    sup=n;
    quicksort(num,inf,sup,n);
    
    
    
    //IMPRIMIR ARREGLO ORDENADO
    printf("\n\n\n ***  ARREGLO ORDENADO  ***\n\n\n");
    for(i=0;i<n;i++)
    {
        printf("  %d \n",num[i]);
    }
}

No hay comentarios:

Publicar un comentario