Sorting algorithms/Comb sort: Difference between revisions
Content added Content deleted
(+ Haskell) |
(Add BBC Basic and Cobol versions of Combsort11) |
||
Line 109: | Line 109: | ||
<pre>88,18,31,44,4,0,8,81,14,78,20,76,84,33,73,75,82,5,62,70 |
<pre>88,18,31,44,4,0,8,81,14,78,20,76,84,33,73,75,82,5,62,70 |
||
0,4,5,8,14,18,20,31,33,44,62,70,73,75,76,78,81,82,84,88</pre> |
0,4,5,8,14,18,20,31,33,44,62,70,73,75,76,78,81,82,84,88</pre> |
||
=={{header|BBC BASIC}}== |
|||
<lang BBC BASIC>DEF PROC_CombSort11(Size%) |
|||
gap%=Size% |
|||
REPEAT |
|||
IF gap% > 1 THEN |
|||
gap%=gap% / 1.3 |
|||
IF gap%=9 OR gap%=10 gap%=11 |
|||
ENDIF |
|||
I% = 1 |
|||
Finished%=TRUE |
|||
REPEAT |
|||
IF data%(I%) > data%(I%+gap%) THEN |
|||
SWAP data%(I%),data%(I%+gap%) |
|||
Finished% = FALSE |
|||
ENDIF |
|||
I%+=1 |
|||
UNTIL I%+gap% > Size% |
|||
UNTIL gap%=1 AND Finished% |
|||
ENDPROC</lang> |
|||
=={{header|C}}== |
=={{header|C}}== |
||
Line 202: | Line 224: | ||
} |
} |
||
}</lang> |
}</lang> |
||
=={{header|COBOL}}== |
|||
This excerpt contains just enough of the procedure division to show the workings. See the example for the bubble sort for a more complete program. |
|||
<lang COBOL> C-PROCESS SECTION. |
|||
C-000. |
|||
DISPLAY "SORT STARTING". |
|||
MOVE WC-SIZE TO WC-GAP. |
|||
PERFORM E-COMB UNTIL WC-GAP = 1 AND FINISHED. |
|||
DISPLAY "SORT FINISHED". |
|||
C-999. |
|||
EXIT. |
|||
E-COMB SECTION. |
|||
E-000. |
|||
IF WC-GAP > 1 |
|||
DIVIDE WC-GAP BY 1.3 GIVING WC-GAP |
|||
IF WC-GAP = 9 OR 10 |
|||
MOVE 11 TO WC-GAP. |
|||
MOVE 1 TO WC-SUB-1. |
|||
MOVE "Y" TO WF-FINISHED. |
|||
PERFORM F-SCAN UNTIL WC-SUB-1 + WC-GAP > WC-SIZE. |
|||
E-999. |
|||
EXIT. |
|||
F-SCAN SECTION. |
|||
F-000. |
|||
ADD WC-SUB-1 WC-GAP GIVING WC-SUB-2. |
|||
IF WB-ENTRY(WC-SUB-1) > WB-ENTRY(WC-SUB-2) |
|||
MOVE WB-ENTRY(WC-SUB-1) TO WC-TEMP |
|||
MOVE WB-ENTRY(WC-SUB-2) TO WB-ENTRY(WC-SUB-1) |
|||
MOVE WC-TEMP TO WB-ENTRY(WC-SUB-2) |
|||
MOVE "N" TO WF-FINISHED. |
|||
ADD 1 TO WC-SUB-1. |
|||
F-999. |
|||
EXIT.</lang> |
|||
=={{header|D}}== |
=={{header|D}}== |
||
{{works with|D|2}}<br/> |
{{works with|D|2}}<br/> |