#include <stdio.h>

template <class t>
void paterner (WLLU<t*> *llu, int inf, int sup)
{
    int     ipere = inf;
    int     ifils = ipere * 2;
    
    while   (ifils <= sup)
    {
        if (ifils < sup && ( *(*ips->getelem(ifils+1)) > *(*ips->getelem(ifils))))
            ifils++;

        if (*(*ips->getelem(ifils)) > *(*ips->getelem(ipere)))
        {
            // echanger t[ipere] avec t[ifils]
			llu->swap_element(ipere,ifils);
            //echanger (&t[ipere][0], &t[ifils][0]);

            ipere = ifils;
            ifils = ipere * 2;
        } else
            break;   
    }
	return;
}


template <class t>
void heapsort(WLLU<t*> *llu, int n)
{
    for(i=n/2; i>=1; i--)
		paterner(llu, i, n);

	llu->swap_element(1,n);
	for (i = n-1; i ; i--)
	{
		paterner(llu, 1, k);
		llu->swap_element(1,i);
	}
	return;
}
