# 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.

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)
min(x)
vector_min(x)

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])
vector_merge(x,y)

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:

• If the input vector x has length 1, then it is already sorted. In that case the output is a copy of x
• If the length of the input is larger than 1 then you split x in two parts. The new vector x1 contains the first half of x, and x2 has the second half.
• Be careful when length(x) is even.
• Now you have to sort x1 and x2 by using the same function vector_merge(). Store the results in a1 and a2.
• Finally you have to merge a1 and a2 using the function vector_merge() of the previous exercise, and return the merged vector

How can you test this function?

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