Sorting algorithms/Comb sort: Difference between revisions

Content added Content deleted
Line 1,156: Line 1,156:
110 RANDOMIZE
110 RANDOMIZE
120 NUMERIC ARRAY(11 TO 30)
120 NUMERIC ARRAY(11 TO 30)
130 CALL INIT(ARRAY)
130 LET N=LBOUND(ARRAY)-UBOUND(ARRAY)+1 ! Number of elements
140 CALL INIT(ARRAY)
140 CALL WRITE(ARRAY)
150 CALL WRITE(ARRAY)
150 CALL COMBSORT(ARRAY)
160 CALL COMBSORT(ARRAY)
160 CALL WRITE(ARRAY)
170 CALL WRITE(ARRAY)
170 DEF INIT(REF A)
180 DEF INIT(REF A)
180 FOR I=LBOUND(A) TO UBOUND(A)
190 FOR I=LBOUND(A) TO UBOUND(A)
190 LET A(I)=RND(20)+1
200 LET A(I)=RND(20)+1
200 NEXT
210 NEXT
210 END DEF
220 END DEF
220 DEF WRITE(REF A)
230 DEF WRITE(REF A)
230 FOR I=LBOUND(A) TO UBOUND(A)
240 FOR I=LBOUND(A) TO UBOUND(A)
240 PRINT A(I);
250 PRINT A(I);
250 NEXT
260 NEXT
260 PRINT
270 PRINT
270 END DEF
280 END DEF
280 DEF COMBSORT(REF A)
290 LET N,GAP=UBOUND(A):LET SW=1
290 DEF COMBSORT(REF A)
300 LET N,GAP=UBOUND(A):LET SW=1
300 DO WHILE GAP>1 OR SW
310 DO WHILE GAP>1 OR SW
310 LET GAP=MAX(INT(GAP/1.3),1)
320 LET GAP=MAX(INT(GAP/1.3),1)
320 LET SW=0
330 LET SW=0
330 FOR I=LBOUND(A) TO N-GAP
340 FOR I=LBOUND(A) TO N-GAP
340 IF A(I)>A(I+GAP) THEN
350 IF A(I)>A(I+GAP) THEN
350 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
360 LET SW=1
370 LET SW=1
370 END IF
380 END IF
380 NEXT
390 NEXT
390 LOOP
400 LOOP
400 END DEF</lang>
410 END DEF</lang>


=={{header|J}}==
=={{header|J}}==