Sortowanie tablicy dynamicznej malejąco

0

Cześć, znalazłem funkcje sortującą dynamicznie, ale za cholerę nie mogę ogarnąć w jaki sposób ją zmodyfikować by robiła to w dół.
Pomoże ktoś? :)

void sortowanie(int *tablica, int l, int p)
{
    int sr = tablica[(l + p) / 2];
    int ll,pp,x;
    ll=l;
    pp=p;
    do
    {
        while(tablica[ll] < sr) 
		ll++;
        
        while(tablica[pp] > sr) 
		pp--;
        
        if(ll<=pp)
        
        {
        	/////Podmiana//////
            x=tablica[ll];
            tablica[ll]=tablica[pp];
            tablica[pp]=x;
            ll++;
            pp--;
            
        }
    }
    while(ll<=pp);
    if(pp>l) sortowanie(tablica,l , pp);
    if(ll<p) sortowanie(tablica, ll, p);
}
1

Użyj std::sort z std::greater zamiast wydziwiać.

std::sort(tab, tab+size, std::greater<>{});
0

Ja wiem, że są prostsze sposoby, ale zależy mi na segregacji dynamicznej, na podstawie tego algorytmu. Wiesz, chciałbym takie rzeczy rozumieć :)

1

A co to jest do niezrozumienia. Ostatnim parametrem std::sort jest funktor opisujący porządek jaki musi spełniać posortowany zakres.
Jeśli potrzebujesz zmodyfikować swój algorytm, to po prostu dodaj mu taki argument i użyj go wszędzie tam, gdzie robisz porównanie między elementami tablicy:

void sortowanie(int *tablica, int l, int p, bool (*porzadek)(int a, int b))
{
 ........

1 użytkowników online, w tym zalogowanych: 0, gości: 1