December
1998 QUESTION 5 Total Marks: 20 Marks |
Click here to access other
questions
Click to access
|
| The question is concerned with the
implementation of a descending sort procedure that uses the insertion sort
algorithm. For example, sorting the sequence [7, 3, 2, 1, 9] produces [9, 7, 3, 2, 1]. The
definition of a linked list type, a prototype for the procedure Insert and the procedure InsertSort are given below. TYPE List = ^Node; PROCEDURE Insert(x: List; VAR xs: List); PROCEDURE InsertionSort(VAR xs: List); The procedure insert (to be defined later) takes a singleton list x and a sorted list xs as its arguments, and inserts the element stored in the singleton list into a sorted list such that the list xs remains in descending sorted order. 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 InsertionSort above.
|
[3] |
| (b) | Give the list [2, 5, 1, 4], 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 complexiy of insertion sort? | [1] | |
| (ii) a list in descending 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] | |
| (d) | Define the procedure Insert. | [7] |