A large commit.
[pdp8.git] / sw / src / pascal / QSORT.PS
diff --git a/sw/src/pascal/QSORT.PS b/sw/src/pascal/QSORT.PS
new file mode 100644 (file)
index 0000000..174fb0a
--- /dev/null
@@ -0,0 +1,16 @@
+  PROCEDURE SORT(L,R: INDEX);
+    VAR I,J: INDEX;  X,H: ITEM;
+
+  BEGIN  I := L;  J := R;
+      X := A[ (L+R) DIV 2 ];
+      REPEAT
+          WHILE A[I]<X DO I := I+1;
+          WHILE X<A[J] DO J := J-1;
+          IF I<=J THEN
+          BEGIN  H := A[I];  A[I] := A[J];  A[J] := H;
+              I := I+1;  J := J-1
+          END
+      UNTIL I>J;
+      IF L<J THEN SORT(L,J);
+      IF I<R THEN SORT(I,R)
+  END (* SORT *);