Einzelnen Beitrag anzeigen

Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Array sortieren mit Permutationen..

  Alt 1. Mär 2010, 15:33
Hi,

der Topicname ist mal wieder äußerst nichtsaussagend, daher mal eine kurze Erläuterung:

Ich habe ein Array mit folgendem Aufbau:

Delphi-Quellcode:
  jobArray: Array of TJob;

// wobei:
  TJob = record
          j_id: integer; // Job-ID --> Prozessintern
          j_prio: integer; // Priorität
          j_color: string; // Farbe
          j_name: string; // Name
          j_proc: Array of integer; // Prozesszeit pro Maschine
Nach dem Füllen dieses Arrays, sollen die TJob's nach ihrer Prioriät (TJob.j_prio) absteigend sortiert werden. Dies habe ich über folgenden Quicksort Algorithmus gelöst:

Delphi-Quellcode:
procedure QuickSort(var A: array of TJob; iLo, iHi: Integer) ;
var
  Lo, Hi, Pivot: Integer;
  T: TJob;
begin
  Lo := iLo;
  Hi := iHi;
  Pivot := A[(Lo + Hi) div 2].j_prio;
  repeat
    while A[Lo].j_prio > Pivot do Inc(Lo) ;
    while A[Hi].j_prio < Pivot do Dec(Hi) ;
    if Lo <= Hi then
    begin
      T := A[Hi];
      A[Hi] := A[Lo];
      A[Lo] := T;
      Inc(Lo) ;
      Dec(Hi) ;
    end;
  until Lo > Hi;
  if Hi > iLo then QuickSort(A, iLo, Hi) ;
  if Lo < iHi then QuickSort(A, Lo, iHi) ;
end; // Quicksort
Mein Problem: Ich brauche alle möglichen Permutationen, wenn Jobs mit gleichen Prioritäten vorhanden sind. Hab mir nun so gedacht, dass ich nich das Array an sich speicher, sondern ein neues Array anlege mit den ID's der Jobs in jeweils sortierter Reihenfolge.

Aber wie bekomme ich alle möglichen Permutationen raus? Mit dem rekursiven Quicksort wird das schlecht gehen.


Gruß
Franz
  Mit Zitat antworten Zitat