Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

Beispiel: Auswahlsort

Die folgenden Beispiele zeigen das Sortieren von Feldern mittels Insertsort.

Sprache C Pascal Modula
Beispiel inssort.c inssort.pas inssort.mod


inssort.c

/* Sortieren durch Einsetzen in schon sortierten Teil einer */
/* Liste. Da der Datentyp erst bei einer konkreten Anwndung */
/* feststeht, ist der Sortieralgorithmus nur als Beispiel   */
/* und nicht als Modul programmiert.                        */

#define MAX_SORT_ELT 8000

typedef long SortKeyType;
typedef SortKeyType SortKeyArray[MAX_SORT_ELT];

void SortEinsetzen(SortKeyArray Feld, int Anz)
{  int i, j, Test;
   SortKeyType Help;

   for (i=1; i   

inssort.pas

(* Sortieren durch Einsetzen in schon sortierten Teil einer *)
(* Liste. Da der Datentyp erst bei einer konkreten Anwndung *)
(* feststeht, ist der Sortieralgorithmus nur als Beispiel   *)
(* und nicht als Modul programmiert.                        *)

const
   MaxSortElt = 8000;

type
   SortKeyType = long_integer;
   SortKeyArray = array[1..MaxSortElt] of SortKeyType;

procedure SortEinsetzen(var Feld:SortKeyArray; Anz:integer);
var
   i, j : integer;
   Help : SortKeyType;
   Test : boolean;
begin
   for i:=2 to Anz do
   begin
      j := i;
      Help := Feld[i];
      Test := false;
      repeat
         if (Feld[j-1] <= Help) then
         begin
            Test := true;
         end
         else
         begin
            Feld[j] := Feld[j-1];
            j := j-1;
            if (j <= 1) then
            begin
               Test:=true;
            end;
         end>
   j) then
      begin
         Feld[j] := Help;
      end;
   end;
end;

inssort.mod

(* Sortieren durch Einsetzen in schon sortierten Teil einer *)
(* Liste. Da der Datentyp erst bei einer konkreten Anwndung *)
(* feststeht, ist der Sortieralgorithmus nur als Beispiel   *)
(* und nicht als Modul programmiert.                        *)

CONST
   MaxSortElt = 8000;

TYPE
   SortKeyType = LONGINT;
   SortKeyArray = ARRAY[1..MaxSortElt] OF SortKeyType;

PROCEDURE SortEinsetzen(VAR Feld:SortKeyArray; Anz:CARDINAL);
VAR
   i, j : CARDINAL;
   Help : SortKeyType;
   Test : BOOLEAN;
BEGIN
   FOR i:=2 TO Anz DO
      j := i;
      Help := Feld[i];
      Test := FALSE;
      REPEAT
         IF (Feld[j-1] <= Help) THEN
            Test := TRUE;
         ELSE
            Feld[j] := Feld[j-1];
            j := j-1;
            IF (j <= 1) THEN
               Test:=TRUE;
            END;
         END;
      UNTIL Test;
      IF (i <> j) THEN
         Feld[j] := Help;
      END;
   END;
END SortEinsetzen;


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum