Sorting algorithms/Gnome sort: Difference between revisions
Content added Content deleted
(Added various BASIC dialects (BASIC256, Chipmunk Basic, GW-BASIC, QBasic, Run BASIC and Yabasic)) |
(Added various BASIC dialects (MSX Basic, Minimal BASIC and Quite BASIC)) |
||
Line 1,055: | Line 1,055: | ||
380 LOOP |
380 LOOP |
||
390 END DEF</syntaxhighlight> |
390 END DEF</syntaxhighlight> |
||
==={{header|MSX Basic}}=== |
|||
{{works with|MSX BASIC|any}} |
|||
{{works with|Chipmunk Basic}} |
|||
{{works with|GW-BASIC}} |
|||
{{works with|QBasic}} |
|||
{{trans|GW-BASIC}} |
|||
<syntaxhighlight lang="qbasic">100 CLS |
|||
110 U = 8 |
|||
120 DIM A(U+1) |
|||
130 FOR I = 0 TO U |
|||
140 A(I) = INT(RND(1)*98) |
|||
150 NEXT I |
|||
160 PRINT "unsort: "; : GOSUB 200 |
|||
170 GOSUB 260 : REM gnomeSort |
|||
180 PRINT " sort: "; : GOSUB 200 |
|||
190 END |
|||
200 REM Write Array |
|||
210 FOR I = 0 TO U |
|||
220 PRINT A(I); |
|||
230 NEXT I |
|||
240 PRINT |
|||
250 RETURN |
|||
260 REM gnomeSort |
|||
270 I = 1 |
|||
280 J = I+1 |
|||
290 IF I <= U THEN IF A(I-1) <= A(I) THEN I = J : J = J+1 : GOTO 290 |
|||
300 IF I > U THEN RETURN |
|||
310 IF A(I-1) > A(I) THEN T = A(I-1) : A(I-1) = A(I) : A(I) = T : I = I-1 : IF I = 0 THEN I = J : J = J+1 |
|||
320 GOTO 290</syntaxhighlight> |
|||
==={{header|Minimal BASIC}}=== |
|||
<syntaxhighlight lang="qbasic">10 REM Rosetta Code problem: https://rosettacode.org/wiki/Sorting_algorithms/Gnome_sort |
|||
20 REM by Jjuanhdez, 10/2023 |
|||
100 RANDOMIZE |
|||
110 LET U = 8 |
|||
120 DIM A(9) |
|||
130 FOR I = 0 TO U |
|||
140 LET A(I) = INT(RND*98) |
|||
150 NEXT I |
|||
160 PRINT "UNSORT: "; |
|||
170 GOSUB 220 |
|||
180 GOSUB 280 |
|||
190 PRINT " SORT: "; |
|||
200 GOSUB 220 |
|||
210 STOP |
|||
220 REM WRITE ARRAY |
|||
230 FOR I = 0 TO U |
|||
240 PRINT A(I); |
|||
250 NEXT I |
|||
260 PRINT |
|||
270 RETURN |
|||
280 REM GNOMESORT |
|||
290 LET I = 1 |
|||
300 LET J = I+1 |
|||
310 IF I <= U THEN 350 |
|||
320 IF I > U THEN 190 |
|||
330 IF A(I-1) > A(I) THEN 400 |
|||
340 GOTO 310 |
|||
350 IF A(I-1) <= A(I) THEN 370 |
|||
360 GOTO 320 |
|||
370 LET I = J |
|||
380 LET J = J+1 |
|||
390 GOTO 310 |
|||
400 LET T = A(I-1) |
|||
410 LET A(I-1) = A(I) |
|||
420 LET A(I) = T |
|||
430 LET I = I-1 |
|||
440 IF I = 0 THEN 460 |
|||
450 GOTO 310 |
|||
460 LET I = J |
|||
470 LET J = J+1 |
|||
480 GOTO 310 |
|||
490 END</syntaxhighlight> |
|||
{{out}} |
|||
<pre>UNSORT: 9 86 63 25 19 57 3 39 75 |
|||
SORT: 3 9 19 25 39 57 63 75 86</pre> |
|||
==={{header|PowerBASIC}}=== |
==={{header|PowerBASIC}}=== |
||
Line 1,194: | Line 1,271: | ||
end if |
end if |
||
wend</syntaxhighlight> |
wend</syntaxhighlight> |
||
==={{header|Quite BASIC}}=== |
|||
{{trans|Minimal BASIC}} |
|||
<syntaxhighlight lang="qbasic">100 CLS |
|||
110 LET U = 8 |
|||
120 ARRAY A |
|||
130 FOR I = 0 TO U |
|||
140 LET A(I) = INT(RAND(1)*98) |
|||
150 NEXT I |
|||
160 PRINT "UNSORT: "; |
|||
170 GOSUB 220 |
|||
180 GOSUB 280 |
|||
190 PRINT " SORT: "; |
|||
200 GOSUB 220 |
|||
210 STOP |
|||
220 REM WRITE ARRAY |
|||
230 FOR I = 0 TO U |
|||
240 PRINT A(I); " "; |
|||
250 NEXT I |
|||
260 PRINT |
|||
270 RETURN |
|||
280 REM GNOMESORT |
|||
290 LET I = 1 |
|||
300 LET J = I+1 |
|||
310 IF I <= U THEN 350 |
|||
320 IF I > U THEN 190 |
|||
330 IF A(I-1) > A(I) THEN 400 |
|||
340 GOTO 310 |
|||
350 IF A(I-1) <= A(I) THEN 370 |
|||
360 GOTO 320 |
|||
370 LET I = J |
|||
380 LET J = J+1 |
|||
390 GOTO 310 |
|||
400 LET T = A(I-1) |
|||
410 LET A(I-1) = A(I) |
|||
420 LET A(I) = T |
|||
430 LET I = I-1 |
|||
440 IF I = 0 THEN 460 |
|||
450 GOTO 310 |
|||
460 LET I = J |
|||
470 LET J = J+1 |
|||
480 GOTO 310 |
|||
490 END</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as Minimal BASIC entry.</pre> |
|||
==={{header|Run BASIC}}=== |
==={{header|Run BASIC}}=== |