10 REM ERSTELLEN EINES FELDES ZUM 20 REM SORTIEREN. 30 REM DAS ERSTELLEN KANN ZUFAELLIG 40 REM ODER GEZIEHLT (DURCH EINGABE) 50 REM ERFOLGEN. 60 REM 70 REM SORTIERALGORITHMEN ERHALTEN DIE 80 REM ZEILENNUMMERN VON 10000 BIS 50000 90 REM SIE BENOETIGEN JEWEILS DIESEN 99 REM VORSPANN ZUR AUSFUEHRUNG. 100 REM HERSTELLUNG EINES ARRAYS: 110 REM ARRAYVARIABLE - A$ 120 REM SCHLEIFENVARIABLEN - X, Y, Z 130 REM HILFSVARIABLEN - B$, C$, D$ 140 REM DREIECKTAUSCH MIT - S$ 150 PRINT"[147]":CLR 160 PRINT"SOLL VON H[146]AND ODER Z[146]UFAELLIG ERSTELLT":PRINT 170 INPUT"WERDEN ";X$ 180 IFX$<>"H"ANDX$<>"Z"THEN150 190 IFX$="H"THENGOSUB220:GOSUB1000:GOTO210 200 GOSUB220:GOSUB2000 210 GOTO4000: REM WEITERMACHEN 220 REM ANZAHL DER ELEMENTE BESTIMMEN 230 PRINT:INPUT"ANZAHL DER ELEMENTE ";A 240 IF A>10000THENPRINT:PRINT"ZU VIELE ELEMENTE":GOTO230 250 IFA<10THENPRINT:PRINT"ZU WENIGE ELEMENTE":GOTO230 255 DIM A$(A) 260 INPUT"D[146]RUCKER ODER B[146]ILDSCHIRM ";Y$ 270 IFY$<>"D"ANDY$<>"B"THEN260 280 IFY$="D"THEND=4:GOTO300 290 D=3 300 RETURN 1000 REM EINGABE VON HAND 1010 PRINT"[147]VORWAERTS ODER RUECKWAERTS"; 1020 INPUTX$:IFX$<>"R"ANDX$<>"V"THEN1020 1030 R=1:X1=1:X2=A 1040 IFX$="R"THENR=-1:X1=A:X2=1 1050 Y=0:FORX=X1TOX2STEPR 1060 Y=Y+1:A$(Y)=STR$(X+99) 1070 NEXTX 1080 RETURN 2000 REM ZUFAELLIGE EINGABE 2010 PRINT"[147]" 2020 PRINT:PRINT"ES WERDEN JETZT"A" ELEMENTE ZUFAELLIG":PRINT:PRINT"AUSGEWAEHLT" 2030 PRINT:PRINT"JEDES ELEMENT BESTEHT AUS 3 ZEICHEN.":PRINT:PRINT 2040 FORX=1TOA 2050 A$(X)="" 2060 FORY=1TO3:A$(X)=A$(X)+CHR$(INT(RND(TI)*25)+65):NEXTY 2070 NEXTX 2080 RETURN 3000 REM ZWISCHENAUSGABE DER ELEMENTE 3010 FOR I=1TOA-9STEP10 3020 FOR J=ITOI+9:PRINT#1,A$(J)" ";:NEXTJ 3030 PRINT#1:NEXTI 3040 RETURN 4000 REM WEITERMACHEN 4005 OPEN1,D 4010 PRINT"[147]AUSGABE DES ERSTELLTEN FELDES" 4020 PRINT 4030 GOSUB3000 4040 REM SORTIERUNG STARTET 4050 REM 10040 TI$="000000" 10050 ZF=INT(A/2+.5):DIMTV$(ZF) 10060 FORX=2TOASTEP2 10070 IFA$(X-1)>A$(X)THENTV$(0)=A$(X-1):A$(X-1)=A$(X):A$(X)=TV$(0) 10080 NEXTX:IFA<3THEN 50000 10090 LF=1:FORMZ=1TOINT(LOG(A-1)/LOG(2)) 10100 ZF=INT(ZF/2+.5):LF=2*LF 10110 FORFZ=1TOZF:A1=1+2*LF*(FZ-1):A2=A1+LF:E1=A2-1:E2=E1+LF 10120 IFE2<=ATHENET=LF:GOTO10150 10130 IFA=A1THEN10220 10190 FORY=X-1TOA1STEP-1:A$(Y)=TV$(ET):ET=ET-1:NEXTY:GOTO10210 10200 A$(X)=TV$(ET):ET=ET-1:IFET>=1THEN10220 10210 X=A1 10220 NEXTX 10230 NEXTFZ,MZ 50000 T$=TI$:REM ENDEBEHANDLUNG 50010 PRINT#1 50020 GOSUB 3000 50030 PRINT#1,A;" ELEMENTE" 50040 PRINT#1:PRINT#1:PRINT#1,T$:CLOSE1 50050 END