48 lines
1.4 KiB
Plaintext
Executable File
48 lines
1.4 KiB
Plaintext
Executable File
(*****************************************************************************
|
|
* A simple bubble sort program. Reads integers, one per line, and prints *
|
|
* them out in sorted order. Blows up if there are more than 49. *
|
|
*****************************************************************************)
|
|
PROGRAM Sort(input, output);
|
|
CONST
|
|
(* Max array size. *)
|
|
MaxElts = 50;
|
|
TYPE
|
|
(* Type of the element array. *)
|
|
IntArrType = ARRAY [1..MaxElts] OF Integer;
|
|
|
|
VAR
|
|
(* Indexes, exchange temp, array size. *)
|
|
i, j, tmp, size: integer;
|
|
|
|
(* Array of ints *)
|
|
arr: IntArrType;
|
|
|
|
(* Read in the integers. *)
|
|
PROCEDURE ReadArr(VAR size: Integer; VAR a: IntArrType);
|
|
BEGIN
|
|
size := 1;
|
|
WHILE NOT eof DO BEGIN
|
|
readln(a[size]);
|
|
IF NOT eof THEN
|
|
size := size + 1
|
|
END
|
|
END;
|
|
|
|
BEGIN
|
|
(* Read *)
|
|
ReadArr(size, arr);
|
|
|
|
(* Sort using bubble sort. *)
|
|
FOR i := size - 1 DOWNTO 1 DO
|
|
FOR j := 1 TO i DO
|
|
IF arr[j] > arr[j + 1] THEN BEGIN
|
|
tmp := arr[j];
|
|
arr[j] := arr[j + 1];
|
|
arr[j + 1] := tmp;
|
|
END;
|
|
|
|
(* Print. *)
|
|
FOR i := 1 TO size DO
|
|
writeln(arr[i])
|
|
END.
|
|
|