August
1999 QUESTION 5 Total Marks: 20 Marks |
Click here to access other
questions
SUGGESTED SOLUTIONS |
This question is
concerned with the implementation of a sorting procedure that uses the insertion sort
algorithm. The definition of a linked list type, a prototype for the procedure Insert, and
the procedure InsertionSort are given below. Type List = ^Node;
PROCEDURE Inset(x : List; VAR xs : List); PROCEDURE InsertionSort (VAR xs : List);
END; The procedure insert (to be defined later) takes a singleton list x and a sorted xs as its arguments, and inserts the element stored in the singleton list into the sorted list such that the list xs remains sorted. For example, the figure below shows an example list before and after adding the singleton element 3 :
|
||
(a) | Informally describe the insertion sorting algorithm used in the Pascal procedure InsertSort above. | [3] |
|
||
(b) | Given the list [5,3,4,1], draw four diagrams that show the states of the lists rest and result immediately after each execution of insert. | [8] |
|
||
(c) | How many list elements would have
to be traversed by all the invocations of the insert procedure given: (i) an already sorted list of size N passed to InsertionSort? i.e., what is the worst case cost, or upper-bound complexity of insertion sort? (ii) a list in decreasing order of values of size N passed to InsertionSort? i.e, what is the best case cost, or lower-bound complexity of insertion sort? |
[1] [1] |
(i) N2, or, o(N2) (ii) N, or O(N)
|
||
(d) | Define the procedure Insert. | [7] |
A
definition of Insert is shown below: PROCEDURE Insert(x: List; VAR xs: List); |