Class 16: Quiz 4

April 20, 2018

Please download the file quiz4.R and write your results there. Send the your answers to my mailbox.

1 Exploring vectors

You will program your own version of some standard functions using only for(), if() and indices. All the following functions receive a vector.

Please write your version of the following functions:

  1. vector_min(x), equivalent to min(x). Returns the smallest element in x.
  2. vector_max(x), equivalent to max(x). Returns the largest element in x.
  3. vector_which_min(x), equivalent to which_min(x). Returns the index of the smallest element in x.
  4. vector_which_max(x), equivalent to which_max(x). Returns the index of the largest element in x.

You can test your function with the following code.

x <- sample(5:20, size=10, replace=TRUE)

The two results must be the same. Obviously, you have to replace min and vector_min with the corresponding functions.

2 Merging vectors

Please write a function called vector_merge(x, y) that receives two sorted vectors x and y and returns a new vector with the elements of x and y together sorted. The output vector has size length(x)+length(y).

You must assume that each of the input vectors is already sorted.

For that you have to use three indices: i, j, and k; to point into x, y and the output vector ans. On each step you have to compare x[i] and y[j]. If x[i] < y[j] then ans[k] <- x[i], otherwise ans[k] <- y[j].

You have to increment i or j, and k carefully. To test your function, you can use this code:

a <- sample(letters)
x <- sort(a[1:13])
y <- sort(a[14:26])

The output must be a sorted alphabet.

3 Sorting

please write a function called vector_mergesort(x) that takes a single vector x and returns a new vector with the same elements of x but sorted from the smallest to the largest.

To do so you have to use a recursive strategy as follows:

How can you test this function?

Remember: The more exercises you do, the more chances you have to pass the course.