all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,33 @@
|
|||
MODE DATA = CHAR;
|
||||
PROC swap = (REF DATA a,b)VOID:(
|
||||
DATA tmp:=a; a:=b; b:=tmp
|
||||
);
|
||||
|
||||
PROC cocktail sort = (REF[]DATA a)VOID: (
|
||||
WHILE
|
||||
BOOL swapped := FALSE;
|
||||
FOR i FROM LWB a TO UPB a - 1 DO
|
||||
IF a[ i ] > a[ i + 1 ] THEN # test whether the two elements are in the wrong order #
|
||||
swap( a[ i ], a[ i + 1 ] ); # let the two elements change places #
|
||||
swapped := TRUE
|
||||
FI
|
||||
OD;
|
||||
IF NOT swapped THEN
|
||||
# we can exit the outer loop here if no swaps occurred. #
|
||||
break do while loop
|
||||
FI;
|
||||
swapped := FALSE;
|
||||
FOR i FROM UPB a - 1 TO LWB a DO
|
||||
IF a[ i ] > a[ i + 1 ] THEN
|
||||
swap( a[ i ], a[ i + 1 ] );
|
||||
swapped := TRUE
|
||||
FI
|
||||
OD;
|
||||
# WHILE # swapped # if no elements have been swapped, then the list is sorted #
|
||||
DO SKIP OD;
|
||||
break do while loop: SKIP
|
||||
);
|
||||
|
||||
[32]CHAR data := "big fjords vex quick waltz nymph";
|
||||
cocktail sort(data);
|
||||
print(data)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
MODE DATA = REF CHAR;
|
||||
PROC swap = (REF DATA a,b)VOID:(
|
||||
DATA tmp:=a; a:=b; b:=tmp
|
||||
);
|
||||
|
||||
PROC (REF[]DATA a)VOID cocktail sort;
|
||||
|
||||
[32]CHAR data := "big fjords vex quick waltz nymph";
|
||||
[UPB data]DATA ref data; FOR i TO UPB data DO ref data[i] := data[i] OD;
|
||||
cocktail sort(ref data);
|
||||
FOR i TO UPB ref data DO print(ref data[i]) OD; print(new line);
|
||||
print((data))
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
PROC odd even sort = (REF []DATA a)VOID: (
|
||||
FOR offset FROM 0 DO
|
||||
BOOL swapped := FALSE;
|
||||
FOR i FROM LWB a + offset TO UPB a - 1 - offset DO
|
||||
IF a[ i ] > a[ i + 1 ] THEN # test whether the two elements are in the wrong order #
|
||||
swap( a[ i ], a[ i + 1 ] ); # let the two elements change places #
|
||||
swapped := TRUE
|
||||
FI
|
||||
OD;
|
||||
# we can exit the outer loop here if no swaps occurred. #
|
||||
IF NOT swapped THEN break do od loop FI;
|
||||
swapped := FALSE;
|
||||
FOR i FROM UPB a - 1 - offset - 1 BY - 1 TO LWB a + offset DO
|
||||
IF a[ i ] > a[ i + 1 ] THEN
|
||||
swap( a[ i ], a[ i + 1 ] );
|
||||
swapped := TRUE
|
||||
FI
|
||||
OD;
|
||||
# if no elements have been swapped, then the list is sorted #
|
||||
IF NOT swapped THEN break do od loop FI;
|
||||
OD;
|
||||
break do od loop: SKIP
|
||||
);
|
||||
Loading…
Add table
Add a link
Reference in a new issue