September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,69 @@
|
|||
BEGIN
|
||||
|
||||
CLASS COMPARABLE;;
|
||||
|
||||
COMPARABLE CLASS PAIR(N,V); TEXT N,V;;
|
||||
|
||||
CLASS COMPARATOR;
|
||||
VIRTUAL:
|
||||
PROCEDURE COMPARE IS
|
||||
INTEGER PROCEDURE COMPARE(A, B); REF(COMPARABLE) A, B;;
|
||||
BEGIN
|
||||
END**OF**COMPARATOR;
|
||||
|
||||
COMPARATOR CLASS PAIRBYNAME;
|
||||
BEGIN
|
||||
INTEGER PROCEDURE COMPARE(A, B); REF(COMPARABLE) A, B;
|
||||
BEGIN
|
||||
COMPARE := IF A QUA PAIR.N < B QUA PAIR.N THEN -1 ELSE
|
||||
IF A QUA PAIR.N > B QUA PAIR.N THEN +1 ELSE 0;
|
||||
END;
|
||||
END**OF**PAIRBYNAME;
|
||||
|
||||
PROCEDURE BUBBLESORT(A, C); NAME A; REF(COMPARABLE) ARRAY A; REF(COMPARATOR) C;
|
||||
BEGIN
|
||||
INTEGER LOW, HIGH, I;
|
||||
BOOLEAN SWAPPED;
|
||||
|
||||
PROCEDURE SWAP(I, J); INTEGER I, J;
|
||||
BEGIN
|
||||
REF(COMPARABLE) TEMP;
|
||||
TEMP :- A(I); A(I) :- A(J); A(J) :- TEMP;
|
||||
END**OF**SWAP;
|
||||
|
||||
LOW := LOWERBOUND(A, 1);
|
||||
HIGH := UPPERBOUND(A, 1);
|
||||
SWAPPED := TRUE;
|
||||
WHILE SWAPPED DO
|
||||
BEGIN
|
||||
SWAPPED := FALSE;
|
||||
FOR I := LOW + 1 STEP 1 UNTIL HIGH DO
|
||||
BEGIN
|
||||
COMMENT IF THIS PAIR IS OUT OF ORDER ;
|
||||
IF C.COMPARE(A(I - 1), A(I)) > 0 THEN
|
||||
BEGIN
|
||||
COMMENT SWAP THEM AND REMEMBER SOMETHING CHANGED ;
|
||||
SWAP(I - 1, I);
|
||||
SWAPPED := TRUE;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
END**OF**BUBBLESORT;
|
||||
|
||||
COMMENT ** MAIN PROGRAM **;
|
||||
REF(PAIR) ARRAY A(1:5);
|
||||
INTEGER I;
|
||||
|
||||
A(1) :- NEW PAIR( "JOE", "5531" );
|
||||
A(2) :- NEW PAIR( "ADAM", "2341" );
|
||||
A(3) :- NEW PAIR( "BERNIE", "122" );
|
||||
A(4) :- NEW PAIR( "WALTER", "1234" );
|
||||
A(5) :- NEW PAIR( "DAVID", "19" );
|
||||
|
||||
BUBBLESORT(A, NEW PAIRBYNAME);
|
||||
|
||||
FOR I:= 1 STEP 1 UNTIL 5 DO
|
||||
BEGIN OUTTEXT(A(I).N); OUTCHAR(' '); OUTTEXT(A(I).V); OUTIMAGE; END;
|
||||
OUTIMAGE;
|
||||
|
||||
END.
|
||||
Loading…
Add table
Add a link
Reference in a new issue