home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 03 / kurs / sortmerg.def < prev    next >
Encoding:
Modula Definition  |  1990-01-10  |  1.4 KB  |  36 lines

  1. (**********************************************************)
  2. (*                   Modula-Kurs Teil 6                   *)
  3. (*             (C) Peter Viczena & toolbox 1990           *)
  4. (**********************************************************)
  5.  
  6. DEFINITION MODULE SortMerg;       (* hier für TopSpeed-M2 *)
  7.  
  8. FROM SYSTEM IMPORT ADDRESS;
  9. (* FROM Strings IMPORT Less,Equal,Greater; *)
  10. CONST Less    = -1;                      (* evtl. ändern *)
  11.       Equal   =  0;
  12.       Greater =  1;
  13.  
  14. TYPE Ptr           = ADDRESS;
  15.      CompareResult = [Less..Greater];
  16.      CProc         = PROCEDURE(Ptr,Ptr):CompareResult;
  17.  
  18. PROCEDURE PointerQuickSort(VAR a: ARRAY OF Ptr;
  19.                                n: INTEGER; CompP : CProc);
  20.  
  21. (* Die Prozedur PointerQuickSort ist eine allgemeine
  22.    Sortierroutine zum Sortieren beliebiger Daten. Die Pa-
  23.    rameter sind:
  24.    a: Ein ARRAY von anonymen Pointern, die auf die zu sor-
  25.    tierenden Daten zeigt. Als Ausgabe sind alle ARRAY Ele-
  26.    mente so geordnet, daß a[n]^, a[n+1]^ in aufsteigender
  27.    Reihenfolge entsprechend der Vergleichsoperation CompP
  28.    geordnet sind.
  29.    n: Die Anzahl der zu sortierenden Elemente.
  30.    CompP: Eine Prozedur, die zwei anonyme Pointer als Argu-
  31.    ment hat, und jeweils entscheidet, ob der Inhalt des er-
  32.    sten größer (Greater), kleiner (Less) oder gleich (Equal)
  33.    ist. *)
  34.  
  35. END SortMerg.
  36.