8-Bit Software Online Conversion

:0.$.BUBCOMP - Listing

10MODE7:@%=&00000405:max%=1000 20PRINT'" How many numbers are to be sorted"'" between 2 and 10 ":REPEAT:INPU T nos%:UNTIL (nos%>1) AND (nos%<11) 30PRINT" Array size 2^";nos%;" = ";2^ nos% 40DIM times%(4,nos%,4),A%(2^nos%) 50FOR loop%= 1 TO 4:FOR loopy%= 1 TO nos%: times%(loop%,loopy%,1)=99999999 :N EXT loopy%:NEXT loop% 60PRINT'" How many different groups o f data"'" are to be sorted between"'" 1 and 10":REPEAT:INPUTcompare%:UNTIL (comp are%>0) AND (compare%<11) 70MODE0:VDU23;8202;0;0;0;:PRINTTAB(0, 1);" Current sort type :" 80PRINTTAB(0,2);" Current sort size : " 90PRINTTAB(15,4);"Array size" 100PRINTTAB(0,6);"Sort type" 110FOR loop%=1 TO 4:PRINTTAB(8,loop%*4 +4);"min":PRINTTAB(8,loop%*4+5);"av.":PR INTTAB(8,loop%*4+6);"max":NEXT loop% 120PRINTTAB(0,9);"Shrink":PRINTTAB(0,1 3);"Twobub":PRINTTAB(0,17);"Twobubs":PRI NTTAB(0,21);"Comb" 130FOR seed%=1 TO compare% 140FOR loopy%=2 TO nos% 150PRINTTAB(loopy%*7,6);2^loopy% 160size%=2^loopy% 170PRINTTAB(21,2);" ":PRINTTAB(21,2 );size% 180sort%=1:PRINTTAB(21,1);"Shrink ": PROCshrink`sort 190sort%=2:PRINTTAB(21,1);"Twobub ": PROCtwobub`sort 200sort%=3:PRINTTAB(21,1);"Twobubs ": PROCtwobubs`sort 210sort%=4:PRINTTAB(21,1);"Combsort ": PROCcomb`sort 220NEXT loopy%:NEXT seed% 230PRINTCHR$(0,20);"Finished." 240END 250: 260DEFPROCrandomize 270s=RND(-seed%) 280FOR loop%=0 TO size% 290A%(loop%)=RND(max%) 300NEXT loop% 310time%=TIME 320ENDPROC 330: 340DEFPROCtiming 350time%=TIME-time% 360IF time% < times%(sort%,loopy%,1) T HEN times%(sort%,loopy%,1) = time% 370PRINTTAB(loopy%*7,sort%*4+4);times% (sort%,loopy%,1)/100 380IF time% > times%(sort%,loopy%,3) T HEN times%(sort%,loopy%,3) = time% 390PRINTTAB(loopy%*7,sort%*4+6);times% (sort%,loopy%,3)/100 400IF times%(sort%,loopy%,2)=0 THEN ti mes%(sort%,loopy%,2)=time% ELSE times%(s ort%,loopy%,2)=(times%(sort%,loopy%,2)+t ime%)/2 410PRINTTAB(loopy%*7,sort%*4+5);times% (sort%,loopy%,2)/100 420ENDPROC 430: 440DEFPROCshrink`sort 450PROCrandomize 460low%=size% 470REPEAT 480flag=FALSE 490FOR loop%=0 TO low%-1 500IF A%(loop%)<A%(loop%+1) THEN swap% =A%(loop%):A%(loop%)=A%(loop%+1):A%(loop %+1)=swap%:flag=TRUE 510NEXT loop% 520low%=low%-1 530UNTIL flag=FALSE 540PROCtiming 550ENDPROC 560: 570DEFPROCtwobub`sort 580PROCrandomize 590REPEAT 600flag=FALSE 610FOR loop%=0 TO size%-1 620IF A%(loop%)<A%(loop%+1) THEN swap% =A%(loop%):A%(loop%)=A%(loop%+1):A%(loop %+1)=swap%:flag=TRUE 630NEXT loop% 640FOR loop%=size% TO 1 STEP -1 650IF A%(loop%)>A%(loop%-1) THEN swap% =A%(loop%):A%(loop%)=A%(loop%-1):A%(loop %-1)=swap%:flag=TRUE 660NEXT loop% 670UNTIL flag=FALSE 680PROCtiming 690ENDPROC 700: 710DEFPROCtwobubs`sort 720PROCrandomize 730low%=0:high%=size% 740REPEAT 750flag=FALSE 760FOR loop%=low% TO high%-1 770IF A%(loop%)<A%(loop%+1) THEN swap% =A%(loop%):A%(loop%)=A%(loop%+1):A%(loop %+1)=swap%:flag=TRUE 780NEXT loop% 790high%=high%-1 800FOR loop%=high% TO low%+1 STEP -1 810IF A%(loop%)>A%(loop%-1) THEN swap% =A%(loop%):A%(loop%)=A%(loop%-1):A%(loop %-1)=swap%:flag=TRUE 820NEXT loop% 830low%=low%+1 840UNTIL flag=FALSE 850PROCtiming 860ENDPROC 870: 880DEFPROCcomb`sort 890PROCrandomize 900gap%=size% 910REPEAT 920flag=FALSE 930gap%=gap%/1.3 940IF gap%<1 gap%=1 950IF (gap%=9)OR(gap%=10) gap%=11 960FOR pos%=0 TO size%-gap% 970IF A%(pos%)<A%(pos%+gap%) THEN swap %=A%(pos%):A%(pos%)=A%(pos%+gap%):A%(pos %+gap%)=swap%:flag=TRUE 980NEXT pos% 990UNTIL (flag=FALSE)AND(gap%=1) 1000PROCtiming 1010ENDPROC