Heap
-
Guten Abend miteinander!
Ich habe folgendes Problem: Ich habe ein System, das Prozesse abarbeitet (in einem Heap gespeichert.) Der User kann die Priorität dieser Prozesse aber ändern ("nice command" genannt). Je "nicer" ein Prozess ist, desto kleiner ist seine Priorität im Verglich zu den anderen Prozessen.
Wie kann man das implementieren?
bool scheduler::nice(int process_id, int new_nice_) { //... return true; }
Folgende Methoden / Funktionen sind vorhanden:
add(process* new_process_) remove(int process_id) _heap_sort(void) _heapify_down(unsigned int root_, unsigned int last_) _heapify_up(unsigned int k_)
Zudem ein Prozess-Objekt, " _processes " genannt.
Ich wäre für jede Hilfe sehr dankbar!
Liebe Grüsse,
Max
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Mit der Verschiebung des Threads bin ich nicht einverstanden, denn es geht hier um die Programmierung selbst, nicht "rund um die Programmierung".
Meine Bitte: die Verschiebung rückgangig machen!
-
remove(old), add(new), sort?
-
Ich versteh nicht ganz, wie du das meinst..?
-
Du mußt den alten Eintrag aus dem Head löschen und mit dem neuen Wert wieder reinpacken. Danach mußt du dafür sorgen, daß der Heap wieder intakt ist.
Ansonsten können wir mit den gegebenen Informationen nur raten: Wie genau ist dieser "Heap" strukturiert? Und was bewirken die Parameter der Funktionen, die du dort aufgezählt hast?
-
Ich würde auch den Prozess entfernen und neu einfügen. Das dürfte in einem Max-Heap eine Laufzeit von O(logn) bringen.
Hast du es als einen Max-Heap implementiert?