1 REM Ins{nd av Leopold Lundstr|m <2694> 1986-10-23 12.29.45 (DUMP)
40 REM ++++++++++++++++++++++++
41 REM Program ... SORTERA1.BAS
42 REM Av L Lundstr|m <2694>
43 REM Version .. 1.0
44 REM Bygger p} ..... Sortera.bas
45 REM Version 1.0 84-09-23
46 REM av S Nilsson <3018>
47 REM
48 REM Prog stl ... 5.6 Kbyte
49 REM Variabler 17.2 Kbyte
50 REM
51 REM Testad p} f|ljande maskiner
52 RE ABC80 11273 av <2694> 86-21-10
53 REM Speciella tillbeh|r kr{vs
54 REM Utbyggt minne .. Ja
55 REM
56 REM Anv{nder :
57 REM POKE ... Ja (65013,annullera tangenttryck)
58 REM ------------------------------
59 REM Beskrivning :
60 REM Programmet inneh}ller endast stommen
61 REM till ett program f|r j{mf|relse av
62 REM sorteringsalgoritmer. Det {r t{nkt
63 REM att anv{ndas tillsammans med de
64 REM algoritmer, som Anders Sandberg
65 REM beskriver i ABC-bladet 3.86.39ff
66 REM Dessa }terfinns i s{rskild fil
67 REM SORT4104.BAS
68 REM
100 DIM A$(600%)=7%,B$(600%)=7%,T$(11%)=10%,S$(11%)=24%,L%(10%),R%(10%)
101 REM Stackniv}pekarna L() och R() dimensionerade h{r f|r att ej f} ERR 0
105 DEFFNK=(PEEK(65010%) XOR 255%)*1310.72+(PEEK(65009%) XOR 255%)*5.12+(PEEK(65008%) XOR 255%)/50
110 S$(0%)="Samtliga metoder" : S$(1%)="Falsk BUBBLE sort" : S$(2%)="BUBBLE sort var.1"
115 S$(3%)="BUBBLE sort var.2" : S$(4%)="SELECTION sort" : S$(5%)="SELECTION sort - delayed"
120 S$(6%)="INSERTION sort" : S$(7%)="BATCHER's sort" : S$(8%)="SHELL's sort var.1"
125 S$(9%)="SHELL's sort var.2" : S$(10%)="QUICK sort" : S$(11%)="HEAP sort" : C$(0%)='Tryck tangent'
130 C$(1%)=' OSORTERADE' : C$(2%)=' R[TTV[NT sorterade' : C$(3%)=' OMV[NT sorterade' : C$(4%)=' LIKALYDANDE'
135 IF PEEK(590%)=40% THEN T1%=1% : T2%=0% : T3%=0% : T4%=6% : T5%=29%
140 IF PEEK(590%)=80% THEN T1%=9% : T2%=7% : T3%=14% : T4%=20% : T5%=37%
145 REM RANDOMIZE
150 ; CHR$(12%) : ONERRORGOTO 150
155 ; ' Sorteringstest.'
160 ; ' =============='
165 ; : ; 'Med detta program kan Du direkt under-' : ; 's|ka skillnaden ';
170 ; 'i snabbhet mellan olika' : ; 'sorteringsalgoritmer.'
175 ; : ; '({ven med listor som redan {r sorterade)'
180 ; : ; 'Programmet tar sj{lv tid p} sorterings-' : ; 'proceduren.'
185 ; : ; 'F|rst skapas ett antal slumpvis bildade "ord" '
190 ; : ; 'Hur m}nga ord skall sorteras ?' : ; '(Max 600)'
195 FOR C%=1% TO 11% : T$(C%)=' 0 0.0' : NEXT C% : C0%=0%
200 IF N1%<>0% ; : ; '(om samma ord skall anv{ndas igen' : ; 'mata in 0 (noll)'
205 INPUT N% : IF N%>600% OR N%=1% THEN 150 ELSE IF N%<>0% THEN N1%=N% ELSE IF N1%=0 THEN 150
210 ONERRORGOTO 210
215 ; : ;"'Skall utg}ngslistan vara osorterad (1)' : ; 'r{ttv{nd (2), omv{nd (3) eller best} av samma ord (4) ';
220 GET C$ : C1%=ASC(C$)-48%
225 IF C1%<1% OR C1%>4% THEN 210
230 REM
235 REM ++ Bilda ord att sortera ++
240 REM
245 ; : ; : ; 'V [ N T A ! Ordf|rr}det byggs upp.'
250 IF N%=0% THEN N%=N1% : GOTO 265
255 FOR I%=1% TO N% : A$="" : FOR J%=1% TO 7% : A$=A$+CHR$(RND*28%+65%) : NEXT J%
260 A$(I%)=A$ : B$(I%)=A$ : NEXT I% : ;
265 ON C1% GOSUB 510,1916,1916,510
270 ON C1% GOSUB 510,510,515,520
275 ON C1% GOTO 280,285,285,285
280 FOR I%=1% TO N% : B$(I%)=A$(I%) : NEXT I%
285 ONERRORGOTO 285 : ; CHR$(12%)
290 ; N%;C$(C1%)' ord att sortera' : ;
295 ; TAB(29%+T1%)'Min Sek'
300 FOR I%=0% TO 11% : ; TAB(T1%); : IF I%<10% ; I%'. '; ELSE ; ' 'CHR$(I%+55%)'. ';
305 ; S$(I%);TAB(T1%+28%)T$(I%) : NEXT I%
310 ; : ; TAB(T1%)' C. Ny omg}ng ord' : ; : ; TAB(T1%)' D. Avsluta/Avbryta'
315 ; : ; TAB(T1%)' E. Utskrift p} printer'
320 IF C0%>0% AND C0%<16% THEN ; CUR(C0%,T2%)'*';
325 IF C2%=-1% AND C%<11% THEN C%=C%+1% : GOTO 360
330 ; CUR(23%,0%)'V[LJ METOD (0-B) 'CHR$(8%); : INPUTLINE C$ : C%=ASC(C$)-48% : IF C%=19% ; CHR$(12%) : GOTO 190
335 IF C%=0% THEN C2%=-1% : C%=1% : GOTO 360 ELSE C2%=0%
340 IF C%<0% OR C%>21% THEN GOTO 285
345 IF C%>9% AND C%<17% THEN GOTO 285
350 IF C%=20% 505 ELSE IF C%=21% GOSUB 540 : GOTO 330
355 IF C%>9% C%=C%-7%
360 ; CHR$(13%);CUR(23%,0%)'S O R T E R I N G P ] G ] R !';
365 C0%=C%+4% : ; CUR(C0%,T2%)CHR$(127%) : IF C2% ; CUR(4%,T2%)CHR$(127%)
370 REM
375 REM ++ KLOCKAN AVL[SES ++
380 REM
385 T1=FNK
390 REM
395 ON C% GOSUB 1030,1130,1230,1330,1430,1530,1630,1730,1830,1916,2015
400 REM
405 REM ++ SLUTTID - TIDBER[KNING ++
410 REM
415 T=FNK-T1
420 T1=INT(T/60) : T2=T-T1*60 : T1$=SPACE$(3%-LEN(NUM$(T1)))+NUM$(T1) : T2$=RIGHT$(NUM$(T2),2%)
425 T2$=ADD$(T2$,'0',1%) : IF VAL(T2$)<1% THEN T2$='0'+T2$
430 T$(C%)=T1$+SPACE$(5%-LEN(T2$))+T2$
435 IF C2%<>0% AND C%<11% AND (INP(56%) OR 128%)<>196% THEN ; CHR$(7%) : GOTO 265 ELSE C2%=0% : POKE 65013%,0%
440 ; CHR$(12%,7%)CUR(6%,T4%)S$(C%) : ; CUR(10%,T4%)'Sorteringen tog :';T;' sekunder'
445 REM
450 REM ++ VISUELL KONTROLL ++
455 REM
460 ; CUR(14%,T4%)'Vill Du se orden som sorterats?' : ; CUR(16%,T4%)C$(0%)' J '
465 FOR F=1 TO 1500 : IF (INP(56%) AND 95%)=74% THEN 475 ELSE IF INP(56%)=141% THEN 265
470 NEXT F : GOTO 265
475 L%=0% : POKE 65013%,0% : ; CHR$(12%)
480 K%=PEEK(590%)/8% : FOR I%=1% TO N% STEP K% : FOR J%=0% TO K%-1% : ; B$(I%+J%);
485 IF J%