Sorting algorithms/Cocktail sort: Difference between revisions

Line 292:
 
5000 CLS : PRINT ;"Jumping Zig Zag BubbleSORT"'"aka Sticky Cocktail Sort"
5001 LET b$="": FOR f=48 TO 48+48: LET b$=b$+CHR$ f: NEXT f
5002 LET a$="": FOR f=1 TO 96: LET a$=a$+CHR$ (48+INT (RND*48)): NEXT f
5004 PRINT 'b$''a$
5010 LET a=LEN a$: LET i=1: LET u=0: LET up=0: LET do=0
 
5020 LET d=0: LET p=(NOT u)-u: LET l=(i AND NOT u)+(a AND u)
 
5030 IF NOT u THEN IF a$(l+1)>=a$(l) THEN GO TO 5100
5031 IF u THEN IF a$(l-1)<=a$(l) THEN GO TO 5100
Line 302 ⟶ 303:
5060 IF up THEN IF a<LEN a$ THEN IF a$(l)=a$(a+1) THEN LET w=a: GO SUB 5400: GO SUB 5500
5061 IF do THEN IF i>1 THEN IF a$(l)=a$(i-1) THEN LET w=i: GO SUB 5400: GO SUB 5500
 
5100 LET l=l+p
5150 PRINT AT 10,0;a$(l);AT 12,0;a$
5151 PRINT AT 21,0;i;a$(i),a;a$(a)
5155 IF NOT u THEN IF l<a THEN GO TO 50235030
5156 IF u THEN IF l>i THEN GO TO 50235030
 
5170 LET do=up=1: LET up=1
5261 LET i=i+u: LET a=a-NOT u: LET u=NOT u
5264 IF d AND i<a THEN GO TO 5020
 
5272 PRINT AT 12,0;a$
5399 STOP
 
5400 LET d=1: LET t$=a$(w): LET a$(w)=a$(l): LET a$(l)=t$: RETURN
 
5500 IF a+1<=LEN a$ THEN IF a$(a)=a$(a+1) THEN LET a=a-1: GO TO 5500
5510 IF i-1>=1 THEN IF a$(i)=a$(i-1) THEN LET i=i+1: GO TO 5500
Anonymous user