PRACTICA 4 (QUICKSORT) Y 5 (HEAPSORT)

PROGRAMACION IV

LUIS ALBERTO JAIME PARRA

6° B

 

/* BACHILLERATO TEC. Nø16 */
/* 6ø SEM. GRUPO:"B" */
/* PROGRAMACION IV */
/* LUIS ALBERTO JAIME PARRA */
/* PRACTICA DE QUICKSORT */

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

int array[20];
void quicksort(int unarray[], int izquierda, int derecha);
void intercambio(int unarray[], int x, int y);
void main()
{
int i, j, total;
clrscr();
printf("PROGRAMA QUE ORDENA LA CANTIDAD DE NUMEROS QUE LE DES\n");
printf(" MEDIANTE EL METODO DE QUICKSORT. \n\n");

printf("NUMEROS A ORDENAR: ");
scanf("%d", &total);

printf("\nDAME LOS NUMEROS:\n");
for(j = 0; j < total; j++)
scanf("%d", &array[j]);
quicksort(array, 0, total-1);

printf("\nLA ORDENACION ES: ");
for (j = 0; j < total; j++)
printf("%d ", array[j]);
putchar('\n');
getch();
}

void quicksort(int unarray[], int izquierda, int derecha)
{
int actual, ultimo;
if (izquierda >= derecha)
return;
intercambio(unarray, izquierda, (izquierda+derecha)/2);
ultimo = izquierda;
for (actual = izquierda + 1; actual <= derecha; actual++)
if (unarray[actual] < unarray[izquierda])
intercambio(unarray, ++ultimo, actual);
intercambio(unarray, izquierda, ultimo);
quicksort(unarray, izquierda, ultimo-1);
quicksort(unarray, ultimo+1, derecha);
}

void intercambio(int unarray[], int x, int y)
{
int temp;
temp = unarray[x];
unarray[x] = unarray[y];
unarray[y] = temp;
}

 

/* BACHILLERATO TEC. Nø16 */
/* 6ø SEM. GRUPO:"B" */
/* PROGRAMACION IV */
/* LUIS ALBERTO JAIME PARRA */
/* PRACTICA DE HEAPSORT */

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

main()
{
int a[100],n;
int i,k,aux,band;
int izq,der,ap,mayor;
clrscr();
printf("PROGRAMA QUE ORDENA LA CANTIDAD DE NUMEROS QUE LE DES\n");
printf(" MEDIANTE EL METODO HEAPSORT. \n\n");
printf("NUMEROS A ORDENAR: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n\nDAME LOS NUMEROS:\n");
scanf("%d",&a[i]);
}
for(i=2;i<=n;i++)
{
k=i;
band=1;
while((k>1)&&(band==1))
{
band=0;
if(a[k]>a[int(k/2)])
{
aux=a[int(k/2)];
a[int(k/2)]=a[k];
a[k]=aux;
k=int(k/2);
band=1;
}
}
}

for(i=n;i>=2;i--)
{
aux=a[i];
a[i]=a[1];
izq=2;
der=3;
k=1;
while(izq)
{
mayor=a[izq];
ap=izq;
if((mayor))
{
mayor=a[der];
ap=der;
}
if(aux)
{
a[k]=a[ap];
}
k=ap;
izq=k*2;
der=izq+1;
}
a[k]=aux;
}
printf("\nLA ORDENACION ES: ");
for(i=1;i<=n;i++)
{
printf(" %d ",a[i]);
}
getch();
}

CONCLUCIONES: ME ATORE EN EL HEAPSORT Y TODAVIA TENGO UN ERROR QUE NO SE VE AL PONER 0 SE AGRAGAN VALORES FANTASMA...

 

 

Hosted by www.Geocities.ws

1