REM **********************************
REM *           Shellsort            *
REM * Unterprogramm zur Verwendung   *
REM * in eigene Programme.           *
REM * Programmiert 1988 von H. König *
REM *       2000 Hamburg 53          *
REM *                                *
REM **********************************

DEFINT a-z

CLS
INPUT"Anzahl der strings: ";n%
  
DIM a$(n%+1),lg%(50),rg%(50)

PRINT "Die Strings werden erstellt"

FOR j=1 TO n
a$(j)="Test"+RIGHT$(SPACE$(4)+STR$(n-j+1),4)
LOCATE 13,38
PRINT j
NEXT

PRINT "Sortierroutine durch Tastendruck starten"

GOSUB taste
PRINT TIME$
GOSUB sort                   ' Sortierriutine aufrufen
PRINT  TIME$
GOSUB strings.anzeigen
END


' hier beginnt die Sortierroutine

sort:
  m=n                        ' Anzahl der Datensaetze
halbe:
  m = INT(m/2)               ' Tabelle halbieren
  IF m = 0 THEN RETURN       ' alle Eintraege sortiert
  j = 1
  k = n - m
igleichj:
  i = j
iplusm:
  l = i+m
  IF a$(i) <= a$(l) THEN jplus
  SWAP a$(i),a$(l)           ' Strings tauschen
  i = i-m
  IF i <1 THEN jplus
  GOTO iplusm
jplus:
  j = j+1
  IF j > k THEN halbe
  GOTO igleichj

' Ende der Sortierroutine

' die folgenden Unterprogramme sind nur fuers Demo
 
taste:
  x$=""
  WHILE x$=""        
    x$ = INKEY$
  WEND
  x = ASC(x$)
RETURN

strings.anzeigen:
  PRINT "Sortierte Strings anzeigen mit Tastendruck"
  GOSUB taste
  FOR j = 1 TO n
    PRINT j,a$(j)
  NEXT
RETURN
       
        


 
