PROGRAM SelectionSortAnimation (input, output); CONST N = 5; TYPE intList = ARRAY [1..N] OF integer; VAR A : intList; Index, J, K, Temp : integer; PROCEDURE InitArray(VAR iArray: intList; MAXIndex : integer); VAR J : integer; BEGIN FOR J := 1 TO MAXIndex DO CASE J OF 1 : iArray[J] := 6; 2 : iArray[J] := 4; 3 : iArray[J] := 8; 4 : iArray[J] := 10; 5 : iArray[J] := 1; END; { of CASE J } END; { of PROCEDURE InitArray } PROCEDURE DisplayArray(VAR iArray: intList; MAXIndex : integer); VAR J : integer; BEGIN FOR J := 1 TO MAXIndex DO BEGIN writeln('A[',J,'] = ', iArray[J]); END; writeln; END; { of PROCEDURE DisplayArray } BEGIN InitArray(A, N); writeln; writeln('Contents of array A[J] before selection sort: '); DisplayArray(A, N); FOR J := 1 TO N - 1 DO BEGIN Index := J; FOR K := J + 1 TO N DO IF A[K] < A[Index] THEN BEGIN Index := K; { Find index of smalest number } writeln('Decision: A[',K,'] = ',A[K],' < A[',Index,'] = ', A[index]); END; IF Index <> J THEN BEGIN writeln('Exchange: A[',Index,'] <==> A[',J,']'); Temp := A[Index]; A[Index] := A[J]; A[J] := Temp; END; { of exchange } writeln; writeln('Contents of array A[J] after iteratation: ',J); DisplayArray(A, N); END; { of FOR } writeln; writeln('Contents of array A[J] after selection sort: '); DisplayArray(A, N); END. { of Main Program SelectionSortAnimation } { Expected Results Contents of array A[J] before selection sort: A[1] = 6 A[2] = 4 A[3] = 8 A[4] = 10 A[5] = 1 Decision: A[2] = 4 < A[2] = 4 Decision: A[5] = 1 < A[5] = 1 Exchange: A[5] <==> A[1] Contents of array A[J] after iteratation: 1 A[1] = 1 A[2] = 4 A[3] = 8 A[4] = 10 A[5] = 6 Contents of array A[J] after iteratation: 2 A[1] = 1 A[2] = 4 A[3] = 8 A[4] = 10 A[5] = 6 Decision: A[5] = 6 < A[5] = 6 Exchange: A[5] <==> A[3] Contents of array A[J] after iteratation: 3 A[1] = 1 A[2] = 4 A[3] = 6 A[4] = 10 A[5] = 8 Decision: A[5] = 8 < A[5] = 8 Exchange: A[5] <==> A[4] Contents of array A[J] after iteratation: 4 A[1] = 1 A[2] = 4 A[3] = 6 A[4] = 8 A[5] = 10 Contents of array A[J] after selection sort: A[1] = 1 A[2] = 4 A[3] = 6 A[4] = 8 A[5] = 10 }