{ Quick.Inc } { Sortierverfahren: Quick-Sort } { Uebergabeparameter: } { Class (das Array vom Typ StudentArray) } { ClassSize (Letzte Datensatznummer) } { Vordefiniert muss sein: } { StudentArray (TYPE StudentArray= Array Of ...)} { Student (Datentyp) } { Aufruf: } { QuickSort (DatenArray, letzter Datensatz) } {$a-} { Rekursiven Code erzeugen!!! } Procedure QuickSort (Var Class: StudentArray; ClassSize: Integer); Procedure Switch (Var Stu1, Stu2: Student); { Vertauscht Inhalt von zwei Variablen } Var TempStu: Student; { Austauschvariable } Begin { Switch } TempStu:=Stu1; Stu1:=Stu2; Stu2:=TempStu; End; { Switch } Procedure QSort (Klein, Gross: Integer); Var i, j: Integer; { Schleifenvariable } m: Student; Begin { QSort } i:=Klein; j:=Gross; m:=Class[j]; Repeat While Class[i] < m Do i:=i+1; { Class[i] > m ? } While Class[j] > m Do j:=j-1; { Class[j] > m ? } If i<=j Then Begin Switch (Class[j],Class[i]); { austauschen } i:=i+1; j:=j-1; { i u. j annaehern } End; Until i>j; If Kleini Then QSort(i,Gross); { Rekursion } End; { QSort } Begin { QuickSort } QSort(1,ClassSize); End; { QuickSort } {$a+} { Rekursion ausschalten } { Ende Quick.Inc }