Métodos de ordenación usando punteros

Podrias enviarme la implementacion de algunos metodos de ordenacion como heapsort, quicksort, shellsort; pero usando punteros

1 respuesta

Respuesta
1
Quicksort
La implementación es claramente recursiva y suponiendo el pivote el primer elemento del array, el programa sería:
#include<stdio.h>
void ordenar(int *,int,int);
void main()
{
// Dar valores al array
ordenar(array,0,N-1); // Para llamar a la función
}
void ordenar(int *array,int desde,int hasta)
{
int i,d,aux; // i realiza la búsqueda de izquierda a derecha
// y j realiza la búsqueda de derecha a izquierda.
if(desde>=hasta)
return;
for(i=desde+1,d=hasta;;) // Valores iniciales de la búsqueda.
{
for(;i<=hasta && array<=*(array+desde);i++); // Primera búsqueda
for(;d>=0 && *(array+d)>=*(array+desde);d--); // segunda búsqueda
if(i<d) // si no se han cruzado:
{
aux=*(array+i); // Intercambiar.
*(array+i)=*(array+d);
*(array+d)=aux;
}
else // si se han cruzado:
break; // salir del bucle.
}
if(d==desde-1) // Si la segunda búsqueda se sale del array
d=desde; // es que el pivote es el elemento
// más pequeño: se cambia con él mismo.
aux=*(array+d); // Colocar el pivote
*(array+d)=*(array+desde); // en su posición.
*(array+desde)=aux;
ordenar(array,desde,d-1); // Ordenar el primer array.
ordenar(array,d+1,hasta); // Ordenar el segundo array.
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas