Sorting algorithms/Comb sort: Difference between revisions

Content added Content deleted
No edit summary
Line 1,153: Line 1,153:


=={{header|IS-BASIC}}==
=={{header|IS-BASIC}}==
<lang IS-BASIC>100 PROGRAM "CombSrt.bas"
<lang IS-BASIC> 100 PROGRAM "CombSrt.bas"
110 RANDOMIZE
110 RANDOMIZE
120 NUMERIC ARRAY(11 TO 30)
120 LET N=20 ! Number of elements
130 NUMERIC ARRAY(1 TO N)
130 LET N=LBOUND(ARRAY)-UBOUND(ARRAY)+1 ! Number of elements
140 CALL INIT(ARRAY)
140 CALL INIT(ARRAY)
150 CALL WRITE(ARRAY)
150 CALL WRITE(ARRAY)
Line 1,163: Line 1,163:
180 DEF INIT(REF A)
180 DEF INIT(REF A)
190 FOR I=LBOUND(A) TO UBOUND(A)
190 FOR I=LBOUND(A) TO UBOUND(A)
200 LET A(I)=RND(N)+1
200 LET A(I)=RND(20)+1
210 NEXT
210 NEXT
220 END DEF
220 END DEF
Line 1,173: Line 1,173:
280 END DEF
280 END DEF
290 DEF COMBSORT(REF A)
290 DEF COMBSORT(REF A)
300 LET GAP=N:LET SW=1
300 LET N,GAP=UBOUND(A):LET SW=1
310 DO WHILE GAP>1 OR SW
310 DO WHILE GAP>1 OR SW
320 LET GAP=MAX(INT(GAP/1.3),1)
320 LET GAP=MAX(INT(GAP/1.3),1)
330 LET SW=0
330 LET SW=0
340 FOR I=1 TO N-GAP
340 FOR I=LBOUND(A) TO N-GAP
350 IF A(I)>A(I+GAP) THEN
350 IF A(I)>A(I+GAP) THEN
360 LET T=A(I):LET A(I)=A(I+GAP):LET A(I+GAP)=T
360 LET T=A(I):LET A(I)=A(I+GAP):LET A(I+GAP)=T
370 LET SW=1
370 LET SW=1
380 END IF
380 END IF
390 NEXT
390 NEXT
400 LOOP
400 LOOP