Sorting algorithms/Insertion sort: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
Not a robot (talk | contribs) (Add PL/M) |
||
Line 3,119: | Line 3,119: | ||
end insert_sort; |
end insert_sort; |
||
</lang> |
</lang> |
||
=={{header|PL/M}}== |
|||
<lang plm>100H: |
|||
/* INSERTION SORT ON 16-BIT INTEGERS */ |
|||
INSERTION$SORT: PROCEDURE (AP, LEN); |
|||
DECLARE (AP, LEN, I, J, V, A BASED AP) ADDRESS; |
|||
DO I = 1 TO LEN-1; |
|||
V = A(I); |
|||
J = I; |
|||
DO WHILE J > 0 AND A(J-1) > V; |
|||
A(J) = A(J-1); |
|||
J = J-1; |
|||
END; |
|||
A(J) = V; |
|||
END; |
|||
END INSERTION$SORT; |
|||
/* CP/M CALLS AND FUNCTION TO PRINT INTEGERS */ |
|||
BDOS: PROCEDURE (FN, ARG); |
|||
DECLARE FN BYTE, ARG ADDRESS; |
|||
GO TO 5; |
|||
END BDOS; |
|||
PRINT$NUMBER: PROCEDURE (N); |
|||
DECLARE S (7) BYTE INITIAL ('..... $'); |
|||
DECLARE (N, P) ADDRESS, C BASED P BYTE; |
|||
P = .S(5); |
|||
DIGIT: |
|||
P = P-1; |
|||
C = N MOD 10 + '0'; |
|||
N = N / 10; |
|||
IF N > 0 THEN GO TO DIGIT; |
|||
CALL BDOS(9, P); |
|||
END PRINT$NUMBER; |
|||
/* SORT AN ARRAY */ |
|||
DECLARE NUMBERS (11) ADDRESS INITIAL (4, 65, 2, 31, 0, 99, 2, 8, 3, 782, 1); |
|||
CALL INSERTION$SORT(.NUMBERS, LENGTH(NUMBERS)); |
|||
/* PRINT THE SORTED ARRAY */ |
|||
DECLARE N BYTE; |
|||
DO N = 0 TO LAST(NUMBERS); |
|||
CALL PRINT$NUMBER(NUMBERS(N)); |
|||
END; |
|||
CALL BDOS(0,0); |
|||
EOF</lang> |
|||
{{out}} |
|||
<pre>0 1 2 2 3 4 8 31 65 99 782</pre> |
|||
=={{header|PowerShell}}== |
=={{header|PowerShell}}== |