Sorting algorithms/Quicksort: Difference between revisions
Content added Content deleted
Line 5,259: | Line 5,259: | ||
__FUNC__(a.grep{ .< p}) + [p] + __FUNC__(a.grep{ .>= p}); |
__FUNC__(a.grep{ .< p}) + [p] + __FUNC__(a.grep{ .>= p}); |
||
}</lang> |
}</lang> |
||
=={{header|Simula}}== |
|||
<lang simula>PROCEDURE QUICKSORT(A); REAL ARRAY A; |
|||
BEGIN |
|||
PROCEDURE QS(A, FIRST, LAST); REAL ARRAY A; INTEGER FIRST, LAST; |
|||
BEGIN |
|||
INTEGER LEFT, RIGHT; |
|||
LEFT := FIRST; RIGHT := LAST; |
|||
IF RIGHT - LEFT + 1 > 1 THEN |
|||
BEGIN |
|||
REAL PIVOT; |
|||
PIVOT := A((LEFT + RIGHT) // 2); |
|||
WHILE LEFT <= RIGHT DO |
|||
BEGIN |
|||
WHILE A(LEFT) < PIVOT DO LEFT := LEFT + 1; |
|||
WHILE A(RIGHT) > PIVOT DO RIGHT := RIGHT - 1; |
|||
IF LEFT <= RIGHT THEN |
|||
BEGIN |
|||
REAL SWAP; |
|||
SWAP := A(LEFT); A(LEFT) := A(RIGHT); A(RIGHT) := SWAP; |
|||
LEFT := LEFT + 1; RIGHT := RIGHT - 1; |
|||
END; |
|||
END; |
|||
QS(A, FIRST, RIGHT); |
|||
QS(A, LEFT, LAST); |
|||
END QUICKSORT; |
|||
END QS; |
|||
QS(A, LOWERBOUND(A, 1), UPPERBOUND(A, 1)); |
|||
END QUICKSORT; |
|||
</lang> |
|||
=={{header|Standard ML}}== |
=={{header|Standard ML}}== |