{============================================================== sort.p Started by Jeff Ondich on 5/1/96 Last modified 10/31/96 This program tests sorting routines. ==============================================================} program sorttester(input,output); const maxIntarraySize = 100; type intarray = array[0..maxIntarraySize] of integer; var theNumbers : intarray; nNumbers : integer; {============================================================== PrintList prints the given list of integers on a single line. ==============================================================} procedure PrintList( var list : intarray; listLength : integer ); var i : integer; begin for i := 1 to listLength do write( list[i]:4 ); writeln end; {============================================================== Sort doesn't do anything, but it does provide a model procedure interface for sorting procedures. ==============================================================} procedure Sort( var list : intarray; listLength : integer ); begin end; {============================================================== SelectionSort sorts the given array of integers in decreasing order. The integers are in the array "num", and the number of integers concerned is "N". ==============================================================} procedure SelectionSort( var num : intarray; N : integer ); var i, j, temp, indexOfMax : integer; begin for i := 1 to N-1 do begin { Find the largest item between indices i and N } indexOfMax := i; for j := i+1 to N do begin if num[j] > num[indexOfMax] then indexOfMax := j end; { Swap the max item and num[i] } temp := num[i]; num[i] := num[indexOfMax]; num[indexOfMax] := temp end end; {============================================================== InsertionSort sorts the given array of integers in decreasing order. The integers are in the array "num", and the number of integers concerned is "N". ==============================================================} procedure InsertionSort( var num : intarray; N : integer ); var i, j, temp : integer; begin for i := 2 to N do begin temp := num[i]; j := i - 1; while (j > 0) and (num[j] < temp) do begin num[j+1] := num[j]; j := j - 1 end; num[j+1] := temp end end; {============================================================== GetNumbers gets a sequence of integers from the user,. ==============================================================} procedure GetNumbers( var num : intarray; var length : integer ); begin length := 0; while (length < maxIntarraySize) and (not eoln) do begin length := length + 1; read( num[length] ) end; readln end; {============================================================== The main program prompts the user, gets a list of integers, sorts them, and prints out the sorted list. ==============================================================} begin write( 'Enter integers separated by spaces: ' ); GetNumbers( theNumbers, nNumbers ); write( 'Before: ' ); PrintList( theNumbers, nNumbers ); InsertionSort( theNumbers, nNumbers ); write( 'After: ' ); PrintList( theNumbers, nNumbers ) end.