Página principal | Módulos | Lista de componentes | Lista de archivos | Archivos de los miembros

heapSort.c

Ir a la documentación de este archivo.
00001 
00007 #include <stdio.h>
00017 void heapify (int *Arreglo, int i, int heapsize )
00018 {       
00019   int derecha, izquierda, mayor;
00020   int temp;
00021   
00022   izquierda=2*i+1;
00023   derecha=2*i+2;
00024   
00025   if (izquierda<=heapsize && *(Arreglo+izquierda)>*(Arreglo+i))
00026     mayor=izquierda;
00027   else
00028     mayor=i;
00029   if (derecha<=heapsize && *(Arreglo+derecha)>*(Arreglo+mayor))
00030     mayor=derecha;
00031   if (mayor != i) {
00032     temp = *(Arreglo+i);
00033     *(Arreglo+i) = *(Arreglo+mayor);
00034     *(Arreglo+mayor) = temp;
00035     heapify (Arreglo, mayor, heapsize);
00036   }
00037   return;
00038 }
00039 
00040 void buildheap (int *Arreglo, int largo)
00041 {
00042   int i;
00043   for (i=(int) ((largo/2)-1);i>=0;i--)
00044     heapify(Arreglo, i, largo);
00045   return;
00046 }
00047 
00055 void Heapsort(int *Arreglo, int largo)
00056 {
00057   int i, heapsize;              
00058   int temp;
00059         
00060   largo=largo-1;
00061   heapsize=largo;
00062         
00063   buildheap(Arreglo, largo);
00064   for (i = (int)(largo);i>=1;i--) {
00065     temp=*(Arreglo+0);
00066     *(Arreglo+0)=*(Arreglo+i);
00067     *(Arreglo+i)=temp;
00068     heapsize=heapsize-1;
00069     heapify(Arreglo,0,heapsize);
00070   }
00071   return;
00072 }

Generado el Fri Nov 19 03:23:50 2004 para Ejemplo por  doxygen 1.3.9.1