Java: řazení celých čísel pomocí prioritní fronty implementované seznamem: pomoc
Ahoj, snažím se naprogramovat program pro řazení celých čísel pomocí prioritní fronty implementované seznamem.
Můj problém je v tom, že mi fronta nevypisuje čísla od největšího, ale nějak na přeskáčku, nechápu proč, může mi někdo poradit prosím?
Koukám tu do toho půl dne a nic nevykoukám.
public class MainApp {
public static void main(String[] args) {
int[] poleindexu = {9,1,8,5,4};
PF intf = new PF();
for (int i = 0; i < poleindexu.length; i++) {
intf.vloz(poleindexu[i]);
}
while (!intf.jePrazdna()) {
System.out.println(intf.vybermax());
}
}
}
class PF {
private class Prvek {
int klic;
Prvek dalsi;
Prvek predch;
Prvek() {
}
Prvek(int klic) {
this.klic = klic;
this.dalsi = null;
this.predch = null;
}
}
private Prvek hlavicka;
PF() {
hlavicka = new Prvek();
hlavicka.dalsi = hlavicka;
hlavicka.predch = hlavicka;
}
boolean jePrazdna() {
return (hlavicka.dalsi == hlavicka.dalsi.dalsi);
}
void vloz(int klic) {
Prvek novy = new Prvek(klic);
novy.dalsi = hlavicka.dalsi;
novy.predch = hlavicka;
hlavicka.dalsi.predch = novy;
hlavicka.dalsi = novy;
}
int vybermax() {
Prvek x = hlavicka.dalsi;
for (Prvek t = x.dalsi; t.dalsi != hlavicka; t = t.dalsi)
if (x.klic < t.klic) {
x = t;
}
int max = x.klic;
x.predch.dalsi = x.dalsi;
x.dalsi.predch = x.predch;
return max;
}
}
To bude tím, že tam žádnou prioritní frontu nemáš. Při vkládání by ti vkládaný prvek měl probublat na správné místo, ty ho ale pouze vložíš.
zmen na
Děkuji oboum za rady, algoritmus nyní funguje, díky..!