10 CLS : REM sorting arrays 20 DIM X(100), C(100) 30 RANDOMIZE TIMER 40 PRINT "Creating set of random numbers" 50 FOR N = 0 TO 100: X(N) = INT(RND(1) * 100): C(N) = X(N): NEXT N 60 FOR N = 0 TO 100: PRINT X(N); " "; : NEXT N: PRINT 70 SLEEP 80 PRINT "Bubble Sort " 90 FINISH = 99 100 PRINT TIME$: STARTTIME = TIMER 110 FLAG = 0 120 FOR N = 0 TO FINISH 130 IF X(N) > X(N + 1) THEN SWAP X(N), X(N + 1): FLAG = 1 140 NEXT N 150 IF FLAG = 1 THEN FINISH = FINISH - 1: GOTO 110 160 DURATION = TIMER - STARTTIME: PRINT TIME$ 170 PRINT "Sorting time = "; DURATION 180 BUBBLE = DURATION 190 FOR N = 0 TO 100: PRINT X(N); " "; : NEXT N: PRINT 200 SLEEP 210 PRINT "Restoring original (dis)order" 220 FOR N = 0 TO 99: X(N) = C(N): NEXT N 230 ' 240 PRINT "Double Bubble" 250 BEGIN = 0: FINISH = 99 260 PRINT TIME$: STARTTIME = TIMER 270 FLAG = 0 280 FOR N = BEGIN TO FINISH 290 IF X(N) > X(N + 1) THEN SWAP X(N), X(N + 1): FLAG = 1 300 NEXT N 310 IF FLAG = 0 THEN 380 320 FINISH = FINISH - 1 330 FLAG = O 340 BEGIN = BEGIN + 1 350 FOR N = FINISH TO BEGIN STEP -1 360 IF X(N) < X(N - 1) THEN SWAP X(N), X(N - 1): FLAG = 1 370 NEXT N 380 IF FLAG = 1 THEN 270 390 DURATION = TIMER - STARTTIME: PRINT TIME$ 400 PRINT "Sorting time = "; DURATION 410 PRINT "Relative to bubble sort "; BUBBLE / DURATION; " times faster" 420 FOR N = 0 TO 100: PRINT X(N); " "; : NEXT N: PRINT 430 SLEEP 440 PRINT Restoring; original(dis); order; again; "" 450 FOR N = 0 TO 99: X(N) = C(N): NEXT N 460 ' 470 PRINT "Top Down Sort" 480 PRINT TIME$: STARTTIME = TIMER 490 FOR N = 0 TO 99 500 CHECK = X(N): FLAG = O 510 FOR P = N TO 100 520 IF X(P) < CHECK THEN FLAG = P: CHECK = X(P) 530 NEXT P 540 IF FLAG > 0 THEN SWAP X(N), X(FLAG) 550 NEXT N 560 DURATION = TIMER - STARTTIME: PRINT TIME$ 570 PRINT "Sorting time = "; DURATION 580 PRINT "Relative to bubble sort "; BUBBLE / DURATION; " times faster" 590 FOR N = 0 TO 100: PRINT X(N); " "; : NEXT N: PRINT