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

Priority Queue problem....

[es] :: Java :: Priority Queue problem....

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dugmee

Član broj: 112517
Poruke: 70
*.businessworld.co.at.



Profil

icon Priority Queue problem....10.06.2010. u 16:38 - pre 168 meseci
Imam problem sa zadatkom. Sta ovdje ne stima pa mi svaki put, koliko god puta pozvala da mi izbaci najveci broj, on mi vraca isti, tj prvi put mi vrati taj, ne obrise ga i onda je logicno da mi njega kao najveceg uvjek vrati? Ako neko uoci neki dobar savjet nek mi malcice objasni ;)

Code:
public int remove() {
        if (!empty()){
        int m = 0; //max broj
            // trazi neki veci broj i ako ima zamjeni ga sa m, tj. do tada najvecim brojem
            for (int i = 1; i < queue.length; i++){
                if (queue[i] > queue[m]) m = i;
            }
        int result = queue[m];  // snimi ga i ovdje bi ga trebao obrisati
            count--; // 
        return result; // vraca broj


Znaci, npr... niz: [1,5,2,4] ---> nalazi najveci broj, snimi ga, brise i pomjera ove brojeve za jedno mjesto.

Insert:
1
5
2
4
i vraca kao:
5
4
2
1

Evo i insert metoda:
public void insertElem(int el) {
if (!full()){
int i=0;
while(i<queue.length) {queue=el; count++; break;}
i++;
}
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
92.244.138.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Priority Queue problem....10.06.2010. u 17:11 - pre 168 meseci
Ti zapravo nađeš maksimalni broj, ali ga ne obrišeš. Tvoja remove() metoda zapravo samo vraća maksimalni broj, i ne menja queue.

Takođe mi ne izgleda da je insert() metoda poslata kako treba.
Ipak se ++uje.
 
Odgovor na temu

dugmee

Član broj: 112517
Poruke: 70
*.businessworld.co.at.



Profil

icon Re: Priority Queue problem....10.06.2010. u 17:31 - pre 168 meseci
Da, ne znam zasto ga ne obrise. Ili kad ovaj broj dodje na njegovo mjesto, onda bi se trebao prepisati preko ovoga, u ovom slucaju recimo 2 preko 5. Ali sta je onda sa pozicijom od 2, ako imam 4 fiksirana mjesta...
 
Odgovor na temu

dule_ns
Novi Sad

Član broj: 123863
Poruke: 257
194.247.212.*



+690 Profil

icon Re: Priority Queue problem....11.06.2010. u 09:23 - pre 168 meseci
Ovo što je postavljeno nema šanse da se iskompajlira. Molim te postavi ono što kompajliraš pa ćemo rešiti problem.

Ne mora cela klasa, ali barem cele metode.

[Ovu poruku je menjao dule_ns dana 11.06.2010. u 10:36 GMT+1]
 
Odgovor na temu

Texas Instruments

Član broj: 227540
Poruke: 272
95.180.72.*



+61 Profil

icon Re: Priority Queue problem....11.06.2010. u 09:56 - pre 168 meseci
Pa neće da ti obriše jer ti samo dohvatiš taj element.
Kada napišeš
Code:

int result = queue[m];

samo si dohvatio taj element i ništa nisi promenio u tom redu.
Treba dodati još jednu liniju posle ove
Code:

int result = queue[m];
queue[m] = null;

Time ćeš postaviti tu referencu u redu na null i moći će garbage collector da je počisti kada se bude aktivirao.
 
Odgovor na temu

Tulex
Danguba
Novi Sad

Član broj: 170959
Poruke: 121
*.prozone.rs.



Profil

icon Re: Priority Queue problem....11.06.2010. u 10:01 - pre 168 meseci
Ne znam sta pokusavas da uradis, da li da uklanjas elemente niza (posto ti se metoda zove remove) ili samo da ga sortiras.
Ako je samo sortiranje u pitanju... evo krajnje elegantnog resenja
Code:
//... 2. Sort doubles or other primitives.
        double[] lengths = {120.0, 0.5, 0.0, 999.0, 77.3};
        Arrays.sort(lengths);
        System.out.println(Arrays.toString(lengths));


A ako i uklanjas elemente niza, onda je normalno sto ti ne radi, jer nigde ne vrsis brisanje.
U svakom slucaju ko sto rece dule_ns stavi bar celu metodu da vidimo cemu sve to.

Pozz
 
Odgovor na temu

[es] :: Java :: Priority Queue problem....

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

Postavi temu Odgovori

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