Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Heap Sortiranje opadajuci niz?

[es] :: C/C++ programiranje :: Heap Sortiranje opadajuci niz?

[ Pregleda: 3806 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Heap Sortiranje opadajuci niz?19.05.2008. u 15:58 - pre 194 meseci
zdravo drugari,
imam ovaj code koji sam pripemio da sortiram neke brojeve, nebitno to on meni sortira od najmanjeg ka najvecem
kako ovde da se prepravi da sortira od veceg ka manjem.
Citao sam knjigu nigdje nisam uspio da nadjem da postoji takvosortiranje niza. ako moze da mi neko popravi ovo ili popravi
hvala punooo ekipa


Code:
void ContainerImpl::heapsort( Key * a, int  n )const
{
    buildheap( a, n );
    while( n > 1 )
    {
        n--;
        Key  t  = a[ 0 ];
        a[ 0 ] = a[ n ];
        a[ n ] = t;
        downheap( a, 0, n );
    }
}

void ContainerImpl::buildheap( Key * a, int  n )const
{
    for( int  v  = n / 2 - 1; v >= 0; v-- )                     //  < >                                             
        downheap( a, v, n );
}

void ContainerImpl::downheap( Key * a, int  v, int  n )const
{
    int w  = 2 * v + 1;                                         //  < erster Nachfolger von v >                     
    while( w < n )
    {
        if( w + 1 < n )                                         //    <gibt es einen zweiten Nachfolger?>           
            if( a[ w + 1 ] > a[ w ] )
                w++;                                            //        <w ist der Nachfolger von v mit           
                                                                //            maximaler Markierung>                 

        if( a[ v ] > a[ w ] || a[ v ] == a[ w ] )
            return;                                             //      v hat die Heap-Eigenschaft                  

        Key  t  = a[ v ];
        a[ v ] = a[ w ];
        a[ w ] = t;                                             //    vertausche Markierungen von v und w           
        v      = w;                                             //    fahre mit v=w fort                            
        w      = 2 * v + 1;
    }
}
 
Odgovor na temu

Sima_Strahota89
Nisam zaposlen
Bačka Palanka

Član broj: 180588
Poruke: 27
*.dialup.neobee.net.



Profil

icon Re: Heap Sortiranje opadajuci niz?19.05.2008. u 16:19 - pre 194 meseci
Code:

void obrni(int niz, int n)
{
int i, temp;
for(i=0;i<n/2;i++)
{
temp=niz[i];
niz[i]=niz[i-temp-1];
niz[i-temp-1]=temp;
}

Ova f-ja menja niz na ovakav nacin:
ako je niz 1,2,3,4,5 on postaje 5,4,3,2,1 sto je ono sto tebi i treba!

Funkcija je napisana po secanju, bez puno razmisljanja, pa ako nadjem negde tacno kako ide javim ti, samo ti pogledaj prvo da li ona ipak radi kako treba.

Znaci, ti sortiraj niz svojim delom koda a onda pozovi ovu f-ju i to je to!

EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to: [code] ... [/code]
... to istovremeno rešava i problem interpretacije kada se "indeks od i" tumači kao ITALIC tag.


[Ovu poruku je menjao X Files dana 20.05.2008. u 11:41 GMT+1]
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Heap Sortiranje opadajuci niz?19.05.2008. u 16:27 - pre 194 meseci
to sto si ti napisao si u pravu ali to je tako reci prebacivanja jednog vec slozenog niza samo obrnuto, to mi ne treba nego mi treba da slozi odmah od najveceg ka najmanjem...
hvala za trud
 
Odgovor na temu

Sima_Strahota89
Nisam zaposlen
Bačka Palanka

Član broj: 180588
Poruke: 27
*.dialup.neobee.net.



Profil

icon Re: Heap Sortiranje opadajuci niz?19.05.2008. u 17:22 - pre 194 meseci
Code:

void MetodaIzbora(int niz[], int n)
{
    int i,j,temp;
    for(i=0; i<n-1;i++)
        for(j=i+1; j<n;j++)
            if(a[j]<a[i])      //sortira u rastucem redosledu sa znakom "<", ako stavis ">" mislim ces dobiti to sto trazis
            {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
            }
}

Mnogo jednostavnija f-ja od tvoje

EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to: [code] ... [/code]

[Ovu poruku je menjao X Files dana 20.05.2008. u 11:39 GMT+1]

[Ovu poruku je menjao X Files dana 20.05.2008. u 11:40 GMT+1]
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Heap Sortiranje opadajuci niz?20.05.2008. u 10:32 - pre 194 meseci
prvo: meni treba Heap opadajuci...
drugo: i to onaj koji sam ja gore napisao jer taj sam implementirao.
da li ima neko neki tip da se to rijesi da se zamijene neke uslovi i da bude to opadajuci pokusavao sam sve ne ide....
ne smijem koristiti dodatne nizove tj prebacivanje iz jednog u drugi itd..
ovo sto ja koristim niz T je samo jedan element koji mora da bude sa heap

hvala
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.uvcms.com.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Heap Sortiranje opadajuci niz?20.05.2008. u 14:02 - pre 194 meseci
http://en.wikipedia.org/wiki/Heapsort
Tko leti vrijedi
 
Odgovor na temu

[es] :: C/C++ programiranje :: Heap Sortiranje opadajuci niz?

[ Pregleda: 3806 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.