Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Sort-an-integer-array/PL-I/sort-an-integer-array.pli
Normal file
37
Task/Sort-an-integer-array/PL-I/sort-an-integer-array.pli
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
DCL (T(10)) FIXED BIN(31); /* scratch space of length N/2 */
|
||||
|
||||
MERGE: PROCEDURE (A,LA,B,LB,C);
|
||||
DECLARE (A(*),B(*),C(*)) FIXED BIN(31);
|
||||
DECLARE (LA,LB) FIXED BIN(31) NONASGN;
|
||||
DECLARE (I,J,K) FIXED BIN(31);
|
||||
|
||||
I=1; J=1; K=1;
|
||||
DO WHILE ((I <= LA) & (J <= LB));
|
||||
IF(A(I) <= B(J)) THEN
|
||||
DO; C(K)=A(I); K=K+1; I=I+1; END;
|
||||
ELSE
|
||||
DO; C(K)=B(J); K=K+1; J=J+1; END;
|
||||
END;
|
||||
DO WHILE (I <= LA);
|
||||
C(K)=A(I); I=I+1; K=K+1;
|
||||
END;
|
||||
RETURN;
|
||||
END MERGE;
|
||||
|
||||
MERGESORT: PROCEDURE (A,N) RECURSIVE ;
|
||||
DECLARE (A(*)) FIXED BINARY(31);
|
||||
DECLARE N FIXED BINARY(31) NONASGN;
|
||||
DECLARE Temp FIXED BINARY;
|
||||
DECLARE (M,I) FIXED BINARY;
|
||||
DECLARE AMP1(N) FIXED BINARY(31) BASED(P);
|
||||
DECLARE P POINTER;
|
||||
IF (N=1) THEN RETURN;
|
||||
M = trunc((N+1)/2);
|
||||
IF (M>1) THEN CALL MERGESORT(A,M);
|
||||
P=ADDR(A(M+1));
|
||||
IF (N-M > 1) THEN CALL MERGESORT(AMP1,N-M);
|
||||
IF A(M) <= AMP1(1) THEN RETURN;
|
||||
DO I=1 to M; T(I)=A(I); END;
|
||||
CALL MERGE(T,M,AMP1,N-M,A);
|
||||
RETURN;
|
||||
END MERGESORT;
|
||||
Loading…
Add table
Add a link
Reference in a new issue