Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Consider the algorithm below, which accepts an array data and an integer r and r

ID: 3845614 • Letter: C

Question

Consider the algorithm below, which accepts an array data and an integer r and returns the rth smallest value in the array

1. Prove that r p must be between 1 and the length of data[p + 1..n], inclusive, when line 14 is executed.

2. Prove that this algorithm returns the r th smallest value in the array. You may assume that all elements of data are unique

Input: data: array of integers Input n: size of data Input r: desired rank to search for: must be between 1 and n inclusive output rth smallest value in data; i.e., a value in data such that exactly r 1 other values are smaller 1 Algorithm: FindRank(data, r) 2 if n 1 then 3 I return data[1] 4 end 5 Let pivot be a randomly selected value in data 6 Partition data into values less than pivot and pivot, as in Quick Sort 7 Insert the pivot in between the "small" and "large" parts of array 8 Let p be the new location of the pivot 9 if r then 10 return pivot 11 else if p r then 12 I return FindRank data 1.p -1], r) 13 else 14 return FindRank (data p 1...n] r p) 15 end

Explanation / Answer

Let us consider that the code works exactly as mentioned till line 8.


So we have three possible cases:
p = r
p > r
p < r

anyway
let us consider question 1.
   when we execute line 14, we have determined that p < r. (doubts?)
   if (p < r), r - p must be posiive or r-p >= 1.

   we know that data[1 .. n] have n elements, so data[p+1 .. n] have n - p elements. For proper operations, r <= n

   r <= n
or r-p <= n-p (proved)


for question 2
   if p = r we know that there are p items before the 'pivot', so it is obhious that pivot is the rth smallest item no doubt.

if p > r, we are sure that pivot is larger than the item we are searching. We also know that at line 8, sub array 1...p-1 have elements strictly less than pivot. Under all these circumstances, the item we are searching for is present in the array[1 .. p-1] and rank of that item in the sub array is equal to the rank of the item in the main array. So the recusrive call is valid.

if p < r, we are sure that pivot is smaller than the item we are searching. We also know that at line 8, sub array p+1...n have elements strictly larger than pivot. since r > p, i item we are finding is present in this sub array, but the rank of the item will be different. the rank would be r - p (since p number of items which were smaller are no more present here). so the reccursive call here is valid too.

I hope you liked my explanations. let ne know if you need help. Shall try my best o resolve all your issues.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote